Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membina Menu Tahap Tanpa Had dengan PHP dan MySQL: Panduan Langkah demi Langkah?

Bagaimana untuk Membina Menu Tahap Tanpa Had dengan PHP dan MySQL: Panduan Langkah demi Langkah?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 09:59:021066semak imbas

How to Build Unlimited-Level Menus with PHP and MySQL: A Step-by-Step Guide?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn