如果我有一段这样的代码:
$get_categories = mysql_query("SELECT * FROM categories");
$categories = mysql_fetch_assoc($get_categories);
类别表包含所有不同的类别及其子类别及其子类别等。
我如何制作一些生成如下列表的PHP代码:
Main Category
-Sub Category
- -Sub Sub Category
- -Sub Sub Category
- - -Sub Sub Sub Category etc
-Sub Category
Main Category
所有类别及其子类别及其子类别等的列表。
如果没有为每个子类别级别创建一个while循环,我无法看到我能做什么(这是愚蠢的,因为我必须创建50个级别以确保它有效,如果我有50个级别的子类别)。
我希望我有道理。
由于
答案 0 :(得分:2)
我无法想到如何不循环每个级别的解决方案。如果不使用元数据和静态结构,则递归是不可避免的。
这样的表结构允许任意类别树。
CREATE TABLE `categories` (
`id` int(8) NOT NULL auto_increment,
`parent_id` int(8) NOT NULL,
`name` varchar(25) NOT NULL
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO categorires (parent_id,name) VALUES (0,'Hardware');
INSERT INTO categorires (parent_id,name) VALUES (1,'Harddrives');
INSERT INTO categorires (parent_id,name) VALUES (2,'IDE');
INSERT INTO categorires (parent_id,name) VALUES (2,'SATA');
INSERT INTO categorires (parent_id,name) VALUES (0,'Memory');
渲染结构:
+Hardware
+Harddrives
+IDE
+SATA
+Memory
PHP:
function renderCategoryTree($categories){
foreach($categories as $category){
if(is_array($category))
renderCategoryTree($category);
else
echo "+$category";
}
}
答案 1 :(得分:1)