Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mehrstufiges Menü aus Datenbankeinträgen

Der Code dafür würde in etwa wie folgt aussehen (dieser muss für die Art und Weise geändert werden, wie Sie mit der Datenbank etc. interagieren):

// 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('');

Versuchen Sie zu verstehen, was ich hier mache, anstatt es nur wörtlich zu implementieren. Sobald Sie rekursive Funktionen kennengelernt haben, kann sich eine ganz neue Welt für Sie öffnen.

Beachten Sie auch, dass Ihre db-Tabelle geändert werden könnte, um diesen Code einfacher zu machen