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!