1

如果我有这样一段代码:

$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 个级别以确保它可以正常工作)。

我希望我说得通。

谢谢

4

2 回答 2

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";
    }
}
于 2011-08-27T22:20:56.433 回答
1

这应该可以帮助您;http://codeassembly.com/How-to-display-inifinit-depth-expandable-categories-using-php-and-javascript/

于 2011-08-27T22:12:25.700 回答