我想创建具有无限级别的父子关系的类别 我有这些表类别,其中包含这些列
cat_id INT NOTNULL AUTOINCREAMENT PRIMARY
cat_name VARCHAR(50) NOT NULL
parent_id INT NULL
grand_parent_id INT NULL
我想添加无限级别的类别和子类别。 例如,我想添加类别Web然后我添加另一个类别其子'PHP' 然后我想添加另一个类别'Cake',其父级是PHP。
所以层次结构应该是这样的:Web→PHP→Cake Web现在是祖父母,PHP是Web的父母和子女,而Cake是PHP的孩子和Web的孙子。
我的界面如下所示:
如果我输入一个新类别,让我们假设我添加了Web,它的cat_id和cat_name在parent_id和grand_parent_id值为'0'的类别表中输入。
然后我插入一个新类别PHP并在下拉列表中选择Web作为其父级;现在插入应该是这样的: php cat_id和cat_name条目在其列和parent_id中获取下拉类别值,即Web和grand_parent_id值为'0'。
现在我插入新类别Cake并在下拉列表中选择PHP作为父级;现在插入应该是这样的: cake cat_id和cat_name在其列和parent_id中插入下拉类别id,即PHP,在grand_parent_id中输入值为2的Web。
你能告诉我怎么办?
答案 0 :(得分:1)
我认为你有点过于复杂。删除grand_parent_id,因为在这些情况下它有点无意义。只需记录parent_id,然后就可以使用递归函数将类别映射到对象或数组中。
请看一下这篇文章,以澄清http://kevin.vanzonneveld.net/techblog/article/convert_anything_to_tree_structures_in_php/
希望有所帮助!