Heim >Backend-Entwicklung >PHP-Tutorial >php无限分类的例子(仿淘宝商品分类)

php无限分类的例子(仿淘宝商品分类)

WBOY
WBOYOriginal
2016-07-25 08:58:431509Durchsuche
  1. CREATE TABLE `type` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `fid` int(11) NOT NULL DEFAULT '0',
  4. `name` varchar(50) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. )
复制代码

二、添加 添加几个顶级分类

  1. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '手机');
  2. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '电脑');
  3. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '鞋子');
  4. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '衣服');
复制代码

这里fid=0是代表顶级分类

接着为{电脑}添加几个个子分类

  1. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2', '台式'), (NULL, '2', '笔记本');
复制代码

这里fid=2,2这个id是分类{电脑}的id,如果是添加{鞋子}的子分类则fid=3 同理为{笔记本}添加子分类则fid=6

  1. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '6', 'ausu'), (NULL, '6', 'hp');
复制代码

三、删除 如果想删除{笔记本}这个分类,可以这样:

  1. DELETE FROM `type` WHERE `id`=6
复制代码

{笔记本}的子分类也要记得做相应的处理

  1. function del($fid) {

  2. $sql="SELECT * FROM `type` WHERE `fid`=$fid";
  3. $rs=mysql_query($sql);
  4. for ($i = 0; $i $sql="DELETE FROM `type` WHERE `id`={$rs[$i]['id']}";
  5. mysql_query($sql);
  6. del($rs['id']);//递归
  7. }
  8. }
  9. del(6);//执行操作

复制代码

为什么那么麻烦用递归,而不是直接这样删除

  1. DELETE FROM `type` WHERE `fid`=6
复制代码

这样就可以直接删除{ausu}、{hp}? 但是假设{ausu}有一个子分类{a1},{a1}也有一个子分类{a2},如果不用递归就无法彻底删除数据。

三、查找

1.查找{电脑}的子分类

  1. SELECT * FROM `type` WHERE `fid`=2
复制代码

2.查找{电脑}的所有子分类

  1. function sel($fid) {

  2. $sql="SELECT * FROM `type` WHERE `fid`=$fid";
  3. $rs=mysql_query($sql);
  4. for ($i = 0; $i echo $rs[$i]['name'];
  5. sel($rs[$i]['id']);//递归
  6. }
  7. }
  8. sel(2);

复制代码

四、实际应用 在数据表添加一个字段`tid`,字段值为记录所属分类`type`表的id。必须是id不能是name,因为name的值可能会改变。

例如,查询属于{电脑}分类的商品:

  1. SELECT * FROM `goods` WHERE `tid`=2
复制代码

就介绍这些吧,希望对大家有所帮助。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn