Home >Backend Development >PHP Tutorial >Unlimited categories --- (product search) --- Pain and happiness_PHP tutorial

Unlimited categories --- (product search) --- Pain and happiness_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 17:53:37923browse

The first project phase is coming to an end. Let me share a custom callback function for infinite categories (to be honest, I was confused when I wrote it, and I am even more confused now when I read it, O(∩_∩)O~)
//Project requirements: I want to do a product search on the homepage
//How to do it: Write a drop-down list, and the list items are the 9 categorynames in the table below. . I want to select any category and search for the products of that category in the product table (including the subcategories below) at one time.
//Thought process: At first I also thought,,,,where path like .%0-1%...., but later I found that I encountered a big problem when paging, because at that time I The uploaded product does not upload the product in the ID that has a subcategory (when looping to query the product, there will be an empty loop - when the category has subcategories).

It’s getting more and more confusing as you talk, so let’s just show it with your watch...
Category table data structure diagram:
+----+-----+-------+-------------+
| id | pid | path | categoryname |
+----+-----+-------+-------------+
| 1 | 0 | 0 | All products 1
| 2 | 1 | 0-1 | Domestic products 2
| 4 | 2 | 0-1-2 | Domestic parallel imports 4
| 5 | 2 | 0-1-2 | Domestic licensed products 5
| 3 | 1 | 0-1 | Imported goods 3
| 6 | 3 | 0-1-3 | Imported parallel imports 6
| 7 | 3 | 0-1-3 | Imported goods 7
| 8 | 1 | 0-1 | Test class 8
| 9 | 1 | 0-1 | Grocery Section 9
+----+-----+-------+-------------+
It's much better when I look at the table. My idea is that if I select "All Products" in the drop-down list, then I should get all the subcategories belonging to all products (and I don't want to get the above "State-owned goods" and "imported goods" in the table, because there are subcategories below them). As I write this, I seem to think that I don’t need to go to such trouble to write a callback. ~~~~(>_<)~~~~ ,,,, it seems, it seems,,,, forget it,,, let’s not give up halfway, it took me more than half an hour to hold back these words. . . ∑
mysql_connect('localhost','root','admin');
mysql_select_db('dzshop');
mysql_query("set names utf8");

//Test
echo rtrim( list_typeid(1), ',' ); //Output 4,5,6,7,8,9 ^o^ At this time, you can select * from goods where typeid in(4,5,6,7,8 ,9) Taking out all the goods is no longer a problem.
echo rtrim( list_typeid(2), ',' ); //Output 4,5
echo rtrim( list_typeid(4), ',' ); //Output 4

/*
* Function: list_typeid
* Function: Get a given category and get all category.id without subcategories under the specified typeid (that is, the id of the category table) (category.id==goods.typeid)
* $id: the id to be queried
* $category_name: Table name of the classification table
*/
function list_typeid($id,$category_name='category'){
$sql="select b.id,b.pid from {$category_name} a,{$category_name} b where a.id={$id} and b.pid={$id}";
$result=mysql_query($sql);
if(mysql_affected_rows()>0){ //The number of affected rows is greater than 0, which means there are subcategories under this category, go in and continue execution
while( $arr = mysql_fetch_assoc($result) ){
$list_id.=list_typeid($arr['id']);
}
}else{ //There is no affected row, which means there are no subclasses under this subclass, so take out this id
return $id.','; //Convenient to write SQL statements .... WHERE ID IN($id) ....
}
return $list_id;
}


Author: zdrjlamp

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/478011.htmlTechArticleThe first project phase is coming to an end. Let me share a custom callback function for unlimited categories (to be honest, at that time I was confused when I wrote it, but I’m even more confused now when I read it, O(_)O~) //Project requirements...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn