为了账号安全,请及时绑定邮箱和手机立即绑定

萌新求教!PHP怎么获取一个分类下面的所有子分类的数据?万分感谢

萌新求教!PHP怎么获取一个分类下面的所有子分类的数据?万分感谢

收到一只叮咚 2019-11-03 09:54:07
数据表结构如下:|category|CREATETABLEcategory(idint(11)NOTNULLDEFAULT'0',pidint(11)DEFAULTNULL,titlevarchar(50)COLLATEutf8_unicode_ciDEFAULTNULL,namevarchar(50)COLLATEutf8_unicode_ciDEFAULTNULL,PRIMARYKEY(id))ENGINE=MyISAMDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci问题:现在每一个分类都可以是无限级,随便点击一个全部,展现所有当前分类下面的子分类数据。比如:点击了食品分类逻辑:食品中有水果,蔬菜,水果里有苹果,香蕉,蔬菜里有西蓝花,白菜,等等。点击食品后,怎么把苹果,香蕉,西蓝花,白菜的所有数据展现出来?也就是说,不管点击哪个分类,都把当前分类下面的所有子分类下面的数据都返回。请问怎么搞呢?(PHP)
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

category表里加个字段path,
ALTERTABLE`category`
ADDCOLUMN`path`varchar(255)NULLDEFAULT0AFTER`name`;
以逗号逐级分隔所有父类,
id
pid
name
path
1
0
食品
0
2
1
水果
0,1
3
1
蔬菜
0,1
4
2
苹果
0,1,2
查询所有食品子类
SELECT*fromcategorywhereFIND_IN_SET('1',`path`);
                            
查看完整回答
反对 回复 2019-11-03
?
慕容森

TA贡献1853条经验 获得超18个赞

可以参考基于closuretable的存储方案,即加一个关联表,存储两个类别之间的层级距离。然后查询所有到该类别距离大于0的所有类别,就是你要查找的所有子类。
                            
查看完整回答
反对 回复 2019-11-03
  • 2 回答
  • 0 关注
  • 412 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信