ホームページ >データベース >mysql チュートリアル >PHP と MySQL を使用して無制限のレベルのメニューを構築する方法: ステップバイステップ ガイド?

PHP と MySQL を使用して無制限のレベルのメニューを構築する方法: ステップバイステップ ガイド?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 18:57:03413ブラウズ

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

PHP と MySQL を使用して無制限のレベルのメニューを構築する

Web サイト開発では、メニュー ナビゲーションはユーザー エクスペリエンスにおいて重要な役割を果たします。ただし、無制限のレベルのサブメニューをサポートするメニューを構築するのは困難な場合があります。 PHP と MySQL を使用してこの機能を実現するための包括的なアプローチを詳しく見てみましょう。

データベース構造とメニュー システム

あなたが言及したデータベース構造は、階層メニュー システム。各メニュー項目には、親子関係を確立するための親フィールドがあります。親 ID 0 はトップレベルのメニュー項目を示します。

トップレベルのメニューを取得しています

トップレベルのメニューを取得するための既存の PHP コードは正しいです:

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

サブメニューの存在と表示の識別

クエリの目的は、メニュー項目に子メニューがあるかどうかを識別し、そのリスト項目内に子メニューを表示することです。これを実現するには、SQL クエリと PHP コードを変更する必要があります。

最適化された SQL クエリ

単一の SQL クエリを使用して、次の順序ですべてのメニュー項目を取得できます。親 ID と位置:

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

洗練された PHP コード

改訂された PHP コードには、現在のメニュー レベルを追跡するスタックが組み込まれ、ネストされたメニューの効率的な処理が保証されます。 :

<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>

この更新されたコードは、メニュー構造を効果的に処理し、ネストされたメニューの HTML マークアップを作成し、それらをそれぞれのリスト項目内に表示します。

以上がPHP と MySQL を使用して無制限のレベルのメニューを構築する方法: ステップバイステップ ガイド?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。