-2

階層メニューを作成したい。関数:

/*
* Table has 3 fields: `ID`, `PARENTID` and `NAME`
* `ID` is unique, `PARENTID` showing his parent node id.
* This function will go through it and build unordered list and call itself when needed to build subitems.
* $level argument used to define wich node's subitems to build. Default is 0 which is top level.
*/    
function showMenu($level = 0) {

$result = mysql_query("SELECT * FROM `menus` WHERE `submenu` = ".$level); 
echo "<ul>";
    while ($node = mysql_fetch_array($result)) { 
        echo "<li>".$node['name'];
        $hasChild = mysql_fetch_array(mysql_query("SELECT * FROM `menus` WHERE `submenu` = ".$node['id'])) != null;
        IF ($hasChild) {
            showMenu($node['id']);
        }
        echo "</li>";
    }
echo "</ul>";
}

私は同様の質問でstackoverflowを見つけました。

私はテーブルを持っていますmenus

+----+----------------+---------+
| id | name           | submenu |
+----+----------------+---------+
|  1 | FIRST HEADER   |    NULL | 
|  2 | SECOND HEADER  |    NULL | 
|  3 | THIRD HEADER   |    NULL | 
|  4 | (fh) submenu 1 |       1 | 
|  5 | (fh) submenu 2 |       1 | 
|  6 | (fh) submenu 3 |       1 | 
|  7 | (sh) submenu 1 |       2 | 
|  8 | (sh) submenu 2 |       2 | 
|  9 | (th) submenu 1 |       3 | 
| 10 | item 1         |       4 | 
| 11 | item 2         |       4 | 
+----+----------------+---------+

この関数をスクリプトで使用しました

showMenu(4);

結果は次のとおりです。

<ul><li>item 1</li><li>item 2</li></ul> 

あなたが見ることができるように、階層の一部についてさえ何の言葉もありません、ソースのほんの2、3のアイテム。私のコードで何が間違っている可能性がありますか?

4

1 に答える 1

2

特にサブメニュー番号のみを要求してい4ます。

引数なしで呼び出すshowMenu()と、メニューツリー全体が表示されます。

于 2013-01-20T01:09:45.320 に答える