PHPで生成されたHTMLを使用してjQueryドロップダウンメニューを作成するメニューがあります。メニューの作成に使用される情報は、カテゴリのデータベース テーブルから取得されます。
ネコ(データベーステーブル)
cat_id | 猫の名前 | 猫の親| cat_short __________________________________________ 1 | ホーム | 0 | 家 __________________________________________ 2 | ゲーム | ゲーム | 1 | ゲーム __________________________________________ 3 | チェッカー | 2 | チェッカーズ
これまでに作成したコードでは、メニューで 2 つのレベルしか使用できず、3 番目のレベル (つまり、チェッカー) の別のドロップダウンを追加しません。
<ul class="dropdown">
<?php
$sql ='SELECT * FROM cats WHERE cat_parent = 0';
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)){
$cats[] = array(
'id' => $row['cat_id'],
'name' => $row['cat_name'],
'parent' => $row['cat_parent'],
'short' => $row['cat_short'],
'subs' => array()
);
}
foreach($cats as $cat){
$sql = 'SELECT * FROM cats WHERE cat_parent = '.$cat['id'];
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)){
$cat['subs'][] = array(
'id' => $row['cat_id'],
'name' => $row['cat_name'],
'parent' => $row['cat_parent'],
'short' => $row['cat_short']
);
}
$menu[] = $cat;
}
foreach($menu as $cat){ ?>
<li class="ui-state-default"><a class="transition" href="index.php?mode=<?php echo $cat['short']; ?>"><?php echo $cat['name']; ?></a>
<?php if($cat['subs'] != '0'){ ?>
<ul class="sub_menu">
<?php foreach($cat['subs'] as $sub){ ?>
<li class="ui-state-default"><a class="transition" href="index.php?mode=<?php echo $sub['short']; ?>"><?php echo $sub['name']; ?></a></li>
<?php } ?>
</ul>
<?php } ?>
</li>
<?php } ?>
</ul>
3つのレイヤーを利用できるようにするには、どうすればこれを書き直す(または関数を書く)ことができますか? jquery を使用してリスト項目要素を簡単に操作して実際のドロップダウンを実行できるため、必要な PHP ループのみが必要です。