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

データベースレコードからのマルチレベルメニュー

    このためのコードは次のようになります(データベースを操作する方法などに応じて変更する必要があります):

    // Here we do a query to get all the rows from the table
    $db_result = db_execute_query('SELECT * FROM `menu_table` ORDER BY `order_no`');
    
    // Here we take the rows and put it into a structured array
    $items = array();
    $hierarchy = array('' => array());
    while ($row = db_fetch_row($db_result)) {
        $items[$row['menu_name']] = $row['menu_name_en'];
        if ($row['main_menu'] == 'yes') {
            $hierarchy[''][] = $row['menu_name'];
        } else {
            if (!isset($hierarchy[$row['sub_menu']]) {
                $hierarchy[$row['sub_menu']] = array();
            }
            $hierarchy[$row['sub_menu']][] = $row['menu_name'];
        }
    }
    
    // Here we define a recursive function to run through our $hierarchy array;
    function show_menu($name = '') {
        if (isset($hierarchy[$name])) {
            if ($name == '') {
                    echo '<ul class="dropdown">';
            } else {
                    echo '<ul class="sub_menu">';
            }
    
            foreach ($hierarchy[$name] as $sub) {
                echo '<li><a href="#">' . $items[$sub] . '</a>';
                show_menu($sub);
                echo '</li>';
            }
    
            echo '</ul>';
        }
    }
    
    // Here we execute the recursive function on the main menu
    show_menu('');
    

    そのまま実装するのではなく、ここで何をしているのかを理解してください。再帰関数を理解すると、まったく新しい世界が開かれます。

    また、このコードを単純にするためにdbテーブルを変更できることにも注意してください



    1. 異なる行を持つmysqlのテーブルから最小最大値と平均値を取得するにはどうすればよいですか?

    2. 不明な列数でのSQLServer2005のピボット

    3. 自己満足は次のことにつながります:リスクが現実になる

    4. MYSQL ON DUPLICATEKEYUPDATEが更新されませんでした