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

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

Barbara Streisand
Barbara Streisandasal
2024-10-30 18:57:03279semak imbas

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

Membina Tahap Menu Tanpa Had dengan PHP dan MySQL

Dalam pembangunan tapak web, navigasi menu memainkan peranan penting dalam pengalaman pengguna. Walau bagaimanapun, membina menu yang menyokong tahap submenu tanpa had boleh mencabar. Mari kita mendalami pendekatan yang komprehensif untuk mencapai fungsi ini menggunakan PHP dan MySQL.

Struktur Pangkalan Data dan Sistem Menu

Struktur pangkalan data yang anda nyatakan ialah pendekatan biasa untuk mewakili sistem menu berhierarki. Setiap item menu mempunyai medan induk untuk mewujudkan hubungan ibu bapa-anak. ID Induk 0 menunjukkan item menu peringkat atas.

Mendapatkan semula Menu Peringkat Atas

Kod PHP sedia ada anda untuk mendapatkan semula menu peringkat atas adalah betul:

<code class="php">$list = $obj->childmenu($parentid);
foreach($list as $menu) {
    echo '<li><a href="#">'.$name.'</a></li>';
}</code>

Mengenal pasti Kewujudan dan Paparan Submenu

Pertanyaan anda bertujuan untuk mengenal pasti jika item menu mempunyai menu anak dan memaparkannya dalam item senarainya. Untuk mencapai matlamat ini, anda perlu mengubah suai pertanyaan SQL dan kod PHP anda.

Pertanyaan SQL Dioptimumkan

Menggunakan satu pertanyaan SQL, kami boleh mendapatkan semula semua item menu yang dipesan oleh ID dan kedudukan induk mereka:

<code class="sql">SELECT id, parent_id, title, link, position FROM menu_item ORDER BY parent_id, position;</code>

Kod PHP Diperhalusi

Kod PHP yang disemak menggabungkan tindanan untuk menjejak tahap menu semasa dan memastikan pengendalian menu bersarang yang cekap :

<code class="php">$items = $query_results;  // Assuming $query_results contains the result of the SQL query

$html = '';
$parent = 0;
$parent_stack = array();

foreach ( $items as $item ) {
    if ( !empty($item['parent_id']) ) {
        $children[$item['parent_id']][] = $item;
    }
}

while ( ( $option = each( $children[$parent] ) ) || ( $parent > 0 ) ) {
    if ( !empty( $option ) ) {
        if ( !empty( $children[$option['value']['id']] ) ) {
            $html .= '<li>' . $option['value']['title'] . '<ul>';
            array_push( $parent_stack, $parent );
            $parent = $option['value']['id'];
        } else {
            $html .= '<li>' . $option['value']['title'] . '</li>';
        }
    } else {
        $html .= '</ul>';
        $parent = array_pop( $parent_stack );
    }
}

echo $html;</code>

Kod yang dikemas kini ini akan memproses struktur menu dengan berkesan, mencipta penanda HTML untuk menu bersarang dan memaparkannya dalam item senarai masing-masing.

Atas ialah kandungan terperinci Bagaimana untuk Membina Tahap Menu 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