本文介紹了帶有子菜單的 PHP Bootstrap 4 導航菜單的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
限時送ChatGPT賬號..
原帖
我想用 Bootstrap 4 在 PHP 中創建一個導航菜單.問題是 <li>
的一個不正確(來自 dropdown
,它不會變成下拉菜單,而只是一個普通的 nav-item
).如果您想使用 <ul>
和 nav-item名為
.我該怎么做?Dropdown
的 id 2
的 上的 dropdown
我希望這是足夠的信息.
這是數組():
數組(大小=3)0 =>數組(大小=5)0 =>數組(大小=3)'id' =>字符串1"(長度=1)'menu_naam' =>字符串家"(長度=4)'parent_id' =>字符串'0'(長度=1)1 =>數組(大小=3)'id' =>字符串2"(長度=1)'menu_naam' =>字符串下拉列表"(長度=4)'parent_id' =>字符串'0'(長度=1)2 =>數組(大小=3)'id' =>字符串3"(長度=1)'menu_naam' =>字符串 'Winkelwagen'(長度 = 11)'parent_id' =>字符串'0'(長度=1)3 =>數組(大小=3)'id' =>字符串4"(長度=1)'menu_naam' =>字符串聯系人"(長度=7)'parent_id' =>字符串'0'(長度=1)4 =>數組(大小=3)'id' =>字符串5"(長度=1)'menu_naam' =>字符串'反饋'(長度=8)'parent_id' =>字符串'0'(長度=1)2 =>數組(大小=1)0 =>數組(大小=3)'id' =>字符串'6'(長度=1)'menu_naam' =>字符串子菜單"(長度=8)'parent_id' =>字符串2"(長度=1)6 =>數組(大小=1)0 =>數組(大小=3)'id' =>字符串7"(長度=1)'menu_naam' =>字符串子子菜單"(長度=12)'parent_id' =>字符串'6'(長度=1)
這是我用來構建菜單的 PHP:
prepare("SELECT * FROM menus");如果 ($sql->execute()) {while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {$array[$row['parent_id']][] = $row;}loop_array($array);}}函數 loop_array($array = array(), $parent_id = 0) {if (!empty($array[$parent_id])) {echo "<ul class="navbar-nav mr-auto">";foreach ($array[$parent_id] 作為 $item) {echo "";echo "<a href="#" class="nav-link">".$item['menu_naam'] ."</a>";loop_array2($array, $item['id']);echo "</li>";}echo "</ul>";}}function loop_array2($array = array(), $parent_id = 0) {if (!empty($array[$parent_id])) {echo "<li class="nav-item dropdown">";foreach ($array[$parent_id] 作為 $item) {echo "<a href="#" class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">".$item['menu_naam'] ."</a>";loop_array3($array, $item['id']);}echo "</li>";}}function loop_array3($array = array(), $parent_id = 0) {if (!empty($array[$parent_id])) {echo "<div class="dropdown-menu" aria-labelledby="navbarDropdown">";foreach ($array[$parent_id] 作為 $item) {echo "<a class="dropdown-item" href="#">".$item['menu_naam'] ."</a>";}回聲</div>";}}
我真的希望有人能幫我解決這個問題,我應該向數據庫添加一些東西,以便它知道這是一個下拉列表嗎?我認為我的代碼太大而且太復雜,應該有一個更簡單的方法,但我不知道如何.我想我需要一種完全不同的方法.如果你能在正確的方向上幫助我,那就太好了.
還要感謝制作子菜單教程的人(在這里您還可以看到菜單是如何使用
和 構建的并完成它需要做的事情,但不適用于
bootstrap
):https://www.youtube.com/watch?v=Ol63V4R-TdI
我在這里找到了一種解決方案:Dynamic menu php bootstrap mysql
我現在擁有的是:
function drawMenu($pdo, $parent_id, $level = null) {$sql = $pdo->prepare("SELECT * FROM menus where parent_id = $parent_id");$sql->execute();foreach ($sql->fetchAll() 作為 $row) {$sql = $pdo->prepare("SELECT count(*) FROM menus where parent_id = " . $row['id'] . "");$sql->execute();//該項目是父項,所以再次遞歸//var_dump($sql->fetchAll()[0][0]);if($sql->fetchAll()[0][0] !=='0' && $level !== 0){echo "<li class="nav-item dropdown"><a href="" . $row['url'] . "" class="nav-link dropdown-toggle" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">".$row['menu_naam'] ."</a><div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
";drawMenu($pdo, $row[0], $level - 1);echo "</div></li>
";}else {//項目是葉子或者我們到達了最終級別,即基本情況,所以打印項目標簽echo "<li class="nav-item"><a href="#" class="nav-link">".$row['menu_naam'] ."</a></li>
";}}}?><header class="navbar navbar-dark bg-dark fixed-top navbar-expand-sm"><a class="navbar-brand" href="#">網上商店</a><button class="navbar-toggler" style="background: #000000" type="button" data-toggle="collapse" data-target="#navbar-header" aria-controls="navbar-header">☰按鈕><div class="navbar-collapse 折疊顯示" id="navbar-header"><ul class="navbar-nav mr-auto"><?phpdrawMenu($pdo, 0, null);?>