Membina Menu Tahap Tanpa Had dengan PHP dan MySQL
Pengenalan
Mewujudkan menu hierarki dengan bilangan tahap yang tidak terhad memberikan cabaran unik untuk pembangun. Artikel ini meneroka penyelesaian yang teguh untuk masalah ini menggunakan PHP dan MySQL.
Struktur Pangkalan Data
Pendekatan biasa ialah menggunakan jadual ringkas seperti ini:
| id | parent_id | name | ... |
di mana parent_id mewakili id item menu induk. parent_id 0 menunjukkan item menu peringkat teratas.
Mengambil Menu Kanak-kanak
Untuk mendapatkan semula menu anak bagi ibu bapa tertentu, kita boleh menggunakan fungsi PHP berikut:
<code class="php">function childMenu($parentId) { $sql = "SELECT * FROM menu WHERE parent_id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$parentId]); return $stmt->fetchAll(); }</code>
Menyemak Submenu
Untuk menentukan sama ada item menu mempunyai menu anak, kita boleh menyemak medan id terhadap medan parent_id. Jika terdapat rekod yang sepadan, ia menunjukkan bahawa terdapat menu kanak-kanak. Berikut ialah versi dipertingkatkan fungsi childMenu:
<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>
Mencipta Menu Berbilang Peringkat
Untuk mencipta menu yang mengendalikan tahap bersarang tanpa had, kita boleh menggunakan rekursif atau pendekatan berulang. Berikut ialah penyelesaian berulang:
<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>
Kod ini secara rekursif memanggil fungsi createMenu untuk mengambil dan memaparkan menu kanak-kanak sehingga semua peringkat habis.
Kesimpulan
Pendekatan ini membolehkan anda mencipta struktur menu yang kompleks dengan cekap dan mengendalikan bilangan tahap tanpa had tanpa risiko gelung tak terhingga. Dengan memanfaatkan prinsip pangkalan data hubungan dan algoritma berulang, anda boleh membina sistem menu yang mantap dan berskala.
Atas ialah kandungan terperinci Bagaimana untuk Membina Menu Tahap Tanpa Had dengan PHP dan MySQL: Panduan Langkah demi Langkah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!