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 に答える