sql >> データベース >  >> RDS >> Mysql

PHPを使用してMySQLからネストされたメニューを作成するにはどうすればよいですか?

    これは特に2つのレベルの深さのためのものです。より多くの場合に推奨されるアプローチは、のように、トラバーサルに最適化されたテーブル構造を使用することです。 http://articles.sitepoint.com/article/hierarchical-data-database/2 (他の場所で指摘されています)または、必要なデータをプルして辞書(連想配列)にプッシュし、その方法でクエリします。

    <?php
        $query = <<<EOT
            SELECT
                parent.name as parent_name,
                child.name as child_name,
            FROM
                items child
            INNER JOIN
                items parent
            ON
                child.parent_id = parent.id
            ORDER BY
                parent.name
    EOT;
    
        $result = mysql_query($query) or die('Failure!');
    
        echo "<ul id=\"catmenu\">";
    
        $last_parent = '';
        while($row = mysql_fetch_array($result)){
            // If this is a new category, start a new one
            if($last_parent != $row['parent_name']){
                // Unless this is the first item, close the last category
                if($last_parent != ''){
                    echo "</ul></li>";
                }
                $last_parent = $row['parent_name'];
                echo "<li class=\"menulist\">{$row['parent_name']}<ul>";
            }
            echo "<li>{$row['child_name']}</li>";
        }
    
        // If we actually had items, close the "category"
        if($last_parent != ''){
            echo "</ul></li>";
        }
    
        echo "</ul>";
    
    ?>
    


    1. サブクエリにインデックスを付けることはできますか?

    2. MySQLのハイフンを句ごとに並べ替える

    3. MySQLドロップビュー

    4. ストアドプロシージャ/関数のリストMysqlコマンドライン