使用PHP 和MySQL 建立無限級選單
簡介
使用下列指令建立分頭>簡介
使用下列指令建立分頭>層菜單無限數量的關卡對開發人員來說是一個獨特的挑戰。本文探討了使用 PHP 和 MySQL 解決此問題的強大解決方案。
資料庫結構
| id | parent_id | name | ... |
常見的方法是使用像這樣的簡單表:
其中parent_id表示父選單項目的id。 Parent_id 為 0 表示頂層選單項目。
取得子選單
<code class="php">function childMenu($parentId) { $sql = "SELECT * FROM menu WHERE parent_id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$parentId]); return $stmt->fetchAll(); }</code>
要擷取給定父級的子選單,我們可以使用下列PHP 函數:
檢查子選單
<code class="php">function childMenu($parentId) { $sql = "SELECT * FROM menu WHERE parent_id = ? OR id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$parentId, $parentId]); return $stmt->fetchAll(); }</code>
要確定選單項目是否有子選單,我們可以根據parent_id 欄位檢查id 欄位。如果有匹配記錄,則表示有子選單。這是childMenu 函數的改進版本:
建立多層選單
<code class="php">$html = ''; $list = childMenu(0); foreach ($list as $menu) { if (childMenu($menu['id'])) { $html .= "<li><a href=\"#\">{$menu['name']}</a>" . "<ul>" . createMenu($menu['id']) . "</ul>" . "</li>"; } else { $html .= "<li><a href=\"#\">{$menu['name']}</a></li>"; } } return $html;</code>
要建立一個處理無限層級嵌套的選單,我們可以使用遞歸或迭代方法。這是一個迭代解決方案:
此程式碼遞歸呼叫 createMenu 函數來取得並顯示子選單,直到耗盡所有層級。
結論
這種方法允許您高效地創建複雜的菜單結構並處理無限數量的級別,而無需擔心無限循環的風險。透過利用關係資料庫原理和迭代演算法,您可以建立強大且可擴展的選單系統。以上是如何使用 PHP 和 MySQL 建立無限級選單:逐步指南?的詳細內容。更多資訊請關注PHP中文網其他相關文章!