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

Patricia Arquette
Lepaskan: 2024-10-31 09:59:02
asal
1049 orang telah melayarinya

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 | ... |
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan