0

基本的に、マルチレベルのナビゲーション(多くのサブナビゲーション)を作成できるようにしたいと思います。明らかに、これはお互いにリストを作成することによって行われることを私は知っていますが、私はそれを正しく表示するロジックにかなり固執しています。

親子関係については見たことがありますが、効率的でわかりやすいものは見つかりません。

HTMLがどのように構築されているかを知る必要はありません。php/mysqlがリストを生成する方法。

あなたが助けることができることを願っています。

A

4

4 に答える 4

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 `tbl_structure` WHERE `PARENTID` = ".$level); 
echo "<ul>";
    while ($node = mysql_fetch_array($result)) { 
        echo "<li>".$node['NAME'];
        $hasChild = mysql_fetch_array(mysql_query("SELECT * FROM `tbl_structure` WHERE `PARENTID` = ".$node['ID'])) != null;
        IF ($hasChild) {
            showMenu($node['ID']);
        }
        echo "</li>";
    }
echo "</ul>";
}

お役に立てば幸いです。

于 2013-01-07T01:16:53.830 に答える
1

最も効率的なのは、データベースからすべてのレコードを一度に取得してから、phpで階層構造を再構築することだと思います。

したがって、データベースには次のような構造があります。

id    parent_id    menu_item

次に、すべてのアイテムを取得し、再帰関数を使用して階層配列を構築します。この配列をループして、メニュー、サブメニュー、サブサブメニューなどのアイテムを取得できます。構造を再構築する方法については、この質問と上位2つの回答を参照してください。

于 2011-10-10T16:07:57.310 に答える
0

HTMLを意味する場合、次のようになります。

<ul>
   <li>
      <a href="#">Title</a>
      <ul>
         <li><a href="#">Title</a></li>
         <li><a href="#">Title</a></li>
         <li><a href="#">Title</a></li>
      </ul>
   </li>
   <li><a href="#">Title</a></li>
   <li><a href="#">Title</a></li>
   <li><a href="#">Title</a></li>
</ul>
于 2011-10-10T15:38:29.897 に答える
0

次のテーブルがあると仮定して、mysqlテーブルのコンテンツで満たされた作成方法を知っていると仮定します。ユニバース>カテゴリ>マーケット>セグメント

1)「ユニバース」のコンテンツを選択してリストします。ユーザーが選択したら、別の.phpスクリプトを呼び出し、選択したユニバースのIDを送信します(GETまたはPOSTを使用)

2)'Categories'のコンテンツを一覧表示します。WHEREidUniverses=2番目のスクリプトに送信したID。

3)市場についても同じです。

AJAXを使用すると簡単です。

コードが必要ですか?

于 2011-10-10T16:05:25.047 に答える