数据库无限分类如何用跟类别ID获取该类别下面的全部子类别商品,上表结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据库无限分类如何用跟类别ID获取该类别下面的全部子类别商品,上表结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1936字,纯文字阅读大概需要3分钟。
内容图文
cat_id cat_name pid cat_pat
类别ID(自增) 类别名称 0(父Id,若为0则是根类别,为自增ID) 路径
请问各位大神,能不能给出最好的方法,直接用跟类别ID 1 查询出下面的所有子类别
数据表如下:
id cat_name pid cat_path
1 手机 0 ,
2 智能手机 1 ,1,
3 三星 2 ,1,2,
4 三星S系列 3 ,1,2,3,
5 三星M系列 3 ,1,2,3,
回复内容:
cat_id cat_name pid cat_pat
类别ID(自增) 类别名称 0(父Id,若为0则是根类别,为自增ID) 路径
请问各位大神,能不能给出最好的方法,直接用跟类别ID 1 查询出下面的所有子类别
数据表如下:
id cat_name pid cat_path
1 手机 0 ,
2 智能手机 1 ,1,
3 三星 2 ,1,2,
4 三星S系列 3 ,1,2,3,
5 三星M系列 3 ,1,2,3,
这没人回答,有前不久做了相关的工作,把算法给你吧。
思路如下:用一个堆栈来临时保存未处理根节点以及所有其的子节点,不断从堆栈中取一个节点输入,并把其直接子节点,压入堆栈,直到堆栈为空,算法结束。
我已经为你重写了详细的注释,看懂应该不成问题了!
$waitList = array(); //等待堆栈(数组用做堆栈),未处理的id
array_push($waitList, $_GET["cid"]); //我这是点中某个节点(cid),列出所有子类中的数据
$rsList = array(); //结果队列
while (count($waitList) > 0) { //等待堆栈中还有节点,继续处理
$tmp = array_pop($waitList); //取出一个节点
array_push($rsList, $tmp); //
输出这个节点
$dc = M("DocCategory"); //从数据表中找出这个节点的所有子节点
$dcon['pid'] = $tmp;
$dcs = $dc->where($dcon)->field('id')->select();
foreach ($dcs as $value) { //将所有子节点压入等待堆栈
array_push($waitList, $value['id']);
}
}
$con['category'] = array('in', $rsList); //生成查询条件,等待队列中已经包含了所有的子节点
内容总结
以上是互联网集市为您收集整理的数据库无限分类如何用跟类别ID获取该类别下面的全部子类别商品,上表结构全部内容,希望文章能够帮你解决数据库无限分类如何用跟类别ID获取该类别下面的全部子类别商品,上表结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。