加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

基于php无限分类的深度理解

发布时间:2022-07-15 01:30:06 所属栏目:PHP教程 来源:互联网
导读:无限分类是实际开发中经常用到的一种数据结构,一般我们称之为树形结构。 题设:类似淘宝的商品分类,可以在任意分类设置其子类。 一、创建`type`数据表 `id` 自增长 `fid` int(11) 默认(0) ,父节点id `name` varchar(50),分类名称 复制代码 代码如下:ww
       无限分类是实际开发中经常用到的一种数据结构,一般我们称之为树形结构。
  
        题设:类似淘宝的商品分类,可以在任意分类设置其子类。
 
  一、创建`type`数据表
  `id` 自增长
  `fid` int(11) 默认(0) ,父节点id
  `name` varchar(50),分类名称
  复制代码 代码如下:www.CuoXIn.com
 
  CREATE TABLE `type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fid` int(11) NOT NULL DEFAULT '0',
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
  )
 
  二、添加
  我们先添加几个顶级分类
  复制代码 代码如下:www.CuoXIn.com
 
  INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '手机');
  INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '电脑');
  INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '鞋子');
  INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '衣服');
 
  这里fid=0是代表顶级分类
 
  接着我们为{电脑}添加几个个子分类
  复制代码 代码如下:www.CuoXIn.com
 
  INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2', '台式'), (NULL, '2', '笔记本');
 
  这里fid=2,2这个id是分类{电脑}的id,如果是添加{鞋子}的子分类则fid=3
  同理我们为{笔记本}添加子分类则fid=6
  复制代码 代码如下:www.CuoXIn.com
 
  INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '6', 'ausu'), (NULL, '6', 'hp');
 
  三、查找
  1.查找{电脑}的子分类
  复制代码 代码如下:www.CuoXIn.com
 
  SELECT * FROM `type` WHERE `fid`=2
 
  2.查找{电脑}的所有子分类
  复制代码 代码如下:www.CuoXIn.com
 
  function sel($fid) {
  $sql="SELECT * FROM `type` WHERE `fid`=$fid";
  $rs=mysql_query($sql);
 
  for ($i = 0; $i < count($rs); $i++) {
  echo $rs[$i]['name'];
 
  sel($rs[$i]['id']);//递归
  }
  }
  sel(2);
 
  四、实际数据应用
  在数据表添加一个字段`tid`,字段值为记录所属分类`type`表的id。必须是id不能是name,因为name的值可能会改变。
  例如查询属于{电脑}分类的商品
  复制代码 代码如下:www.CuoXIn.com
 
  SELECT * FROM `goods` WHERE `tid`=2
 
  注:代码没有运行过可能会有错误,但是思路是正确的,主要的是理解树形结构,而不是记住代码。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读