基于PHP无限分类的深层理解
问题:类似于淘宝的商品分类,你可以在任何范畴建立自己的子类。
1。创建类型数据表
自我成长
int(11)缺省(0),父节点ID
`名字` varchar(50),分类名称
复制代码代码如下所示:
创建表(类型)
` ID ` int(11)不为空auto_increment,
` FID ` int(11)不为空的默认'0',
`名字` varchar(50)不为空,
主键(id)
)
两。添加
让我们先添加几个顶级分类
复制代码代码如下所示:
插入`型`(` ID `,` FID `,`名字`)值(null,'0 ','手机');
插入`型`(` ID `,` FID `,`名字`)值(null,'0 ','计算机');
插入`型`(` ID `,` FID `,`名字`)值(null,0、鞋子);
插入`型`(` ID `,` FID `,`名字`)值(null,0、衣服);
这里的FID = 0是顶级分类。
然后我们添加一些类别的{机}
复制代码代码如下所示:
插入`型`(` ID `,` FID `,`名字`)值(null,2、桌面),(空的,2、笔记本);
在这里,FID = 2, 2,这个ID是一个ID分类{电脑},如果它是一个亚纲的{鞋},FID = 3
以同样的方式,我们添加{笔记本} FID = 6分型
复制代码代码如下所示:
插入`型`(` ID `,` FID `,`名字`)值(null,'6 ','ausu '),(null,6');
三。删除
如果我们想删除这个类别,它非常简单。
复制代码代码如下所示:
从'类型'中删除id = 6
{笔记本}的子类也要记得做相应的处理
复制代码代码如下所示:
函数del($ FID){
从类型中选择*;
RS = mysql_query美元($ SQL);
($ i = 0;$ i <计数($ RS);$ + +){
为SQL =删除`型`哪里` ID ` = { {我} { RS美元美元'id' } };
mysql_query($ SQL);
德尔($ RS { 'id' }); / /递归
}
}
del(6); /操作
在这里,您可能想知道为什么使用递归这么麻烦,而不是直接删除它。
复制代码代码如下所示:
从类型中删除6
所以我们不能直接删除{ ausu },{惠普}但假设{ }有ausu亚纲{ }和{ } A1,A1 A2 } {有次范畴化,我们不能够删除数据完全没有递归。
三。仰望
1。{ }的计算机分型
复制代码代码如下所示:
从类型中选择*= 2
2。找到所有的子{机}
复制代码代码如下所示:
函数SEL($ FID){
从类型中选择*;
RS = mysql_query美元($ SQL);
($ i = 0;$ i <计数($ RS);$ + +){
echo RS { $我} { 'name' };
SEL(RS {我} {美元美元'id' }); / /递归
}
}
Sel(2);
四。实际数据的应用
一场` TID `添加到数据表的ID记录分类`型`表字段值。它必须是身份证不可的名字,因为名字的改变值。
例如,查询属于类别{计算机}的商品
复制代码代码如下所示:
SELECT * FROM `货物`哪里` TID ` = 2
注意:代码可能没有运行就错了,但是思路是正确的,主要的是要了解树形结构,不要记住代码。