thinkphp用递归怎么实现无限分类

zhanghongdong 2010-07-13 12:39:59
thinkphp用递归怎么实现无限分类
主要是怎么才能查询出来,
现在有ID、分类名称、还有一个pid
pid为0的时候就是根目录
pid=1这个1就是这个表的ID值
pid=2也是这个表的ID值
各位朋友帮帮忙吧!
...全文
942 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
amani11 2010-07-13
  • 打赏
  • 举报
回复
看不懂,pid是父id吧?
床上等您 2010-07-13
  • 打赏
  • 举报
回复
你想查找什么??
hahawen 2010-07-13
  • 打赏
  • 举报
回复
我靠,唠叨同志,还在这里坚持奋斗呢。。。
Dleno 2010-07-13
  • 打赏
  • 举报
回复
做无限分类不要用递归 啊。

ID、分类名称、pid、path(路径)、levl(级别)

多加2个字段,无论是查所有上级,还是下级都只需要一条语句。
否则级数多了,要执行N条SQL语句。

cid pid cname orderid path levl
1 0 亚洲 1 1 1
2 1 中国 1 1,2 2
3 2 四川 1 1,2,3 3
16 0 非洲 3 16 1
6 0 欧洲 2 6 1
7 1 韩国 2 1,7 2
8 1 日本 3 1,8 2
9 1 泰国 4 1,9 2
10 2 山东 2 1,2,10 3
11 2 湖南 3 1,2,11 3
12 2 海南 4 1,2,12 3
13 2 上海 5 1,2,13 3
14 2 北京 6 1,2,14 3
*************************
sylar066 2010-07-13
  • 打赏
  • 举报
回复
MySQL端 直接取一个PID变量 那么数字代表层数 你要第一层的就pid=0 递归在数据库上 返回还是数组

PHP端 可以在载入结果集的方法内部递归调用 new __self_class() 压入一个var 属性数组 如果是还有子节点再继续指派var->_self_class 压入数组 打印的时候直接查看 $this->var_array有多少层就可以了
那就是比较无脑的输出了 但是也能打出来 比较耗内存

但是我讲过一个牛B的做法是 用2叉树 每一个都是一个节点 只打印第一层分类
那么PID就是一些没有规律的数字 不再是0->1->2这样的了 第一层是1 第二层的第一个节点是2 第三层第一个是3
第三层第二个就是4 第二层上去第二个就是5
这样在id的区间内就可以打印出任何你想要的层级 只需要一个between语句

看这里 有比较直观的SQL设计方式实现
http://blog.csdn.net/heiyeshuwu/archive/2006/09/23/1268988.aspx

还讲过一个更优化的数据结构 是symfony框架的DB操作包 具体忘记了
xuzuning 2010-07-13
  • 打赏
  • 举报
回复
难道 thinkphp 没有提供无限分类吗?
这算什么框架
kyzy_yy_pm 2010-07-13
  • 打赏
  • 举报
回复
ajax运用,当点击父时候,发送ajax请求根据pid获取相对应的子返回来,如此

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧