我有一个类别,这个类别在5级被划分为子类别。我想定义一个函数,以便我们如何以适当的方式从所有级别的类别访问数据。
Full Texts id cat_id subcat_id cat_name subcat_name status
Edit Delete 1 0 0 food 2
Edit Delete 2 1 0 indian 1
Edit Delete 3 2 0 japanis 1
Edit Delete 4 3 0 chaines 1
Edit Delete 5 4 0 american 1
Edit Delete 6 5 0 southex 1
Edit Delete 7 1 2 indian up 0
Edit Delete 8 1 2 indian delhi 0
有单个根类别食物,其中包含5个类别,其中包含5个子类别。我想通过它来获取所有字段数据的功能,如下所示:
food
* indian
japanis
chaines
american
southex
indian
up
delhi
在下拉列表中请帮帮我.......
答案 0 :(得分:0)
你不需要subcatid。豆腐就够了。如果你需要多个图层,只需添加parentid,将第一级catid的parentid设置为-1或0。 请参阅Oracle的EMP表,您可以在同一个表中查看EMPLOYEE与其MANAGER之间的关系。
您应该了解数据库规范化 - 不确定为什么在同一个表中使用cat_id / catname / subcatid / subcatname?这是一个巨大的冗余。 (有些情况下它很有用,但我几乎不确定你的情况)。
答案 1 :(得分:0)
此表不是最佳的...您有几个无用的列。你只需要“id”,“parent_id”和“name”来完成这项工作。
在“parent_id”列中,您必须为某个行所属的记录设置全局“id”,因为除ROOT之外的每个记录都有其父级。那么你不必担心子级别的数量。
例如
[id] [parent_id] [name]
1 0 food
2 1 indian
3 1 japanis
4 1 chaines
5 1 american
6 1 southex
7 2 up
8 2 delphi
过滤级别1类别使用查询“SELECT * FROM table_name WHERE parent_id ='1'”其中id = 1是类别“food”(root)的row-id。同样地,您可以仅使用替换该数字来过滤所有其他级别 - 对于“印度”等等,id = 2
要动态更改页面上的下拉列表,您需要一些JavaScript代码(预加载值;简单方法)或Ajax(动态更新;更难的方式)