Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wielopoziomowe menu z rekordów bazy danych

Kod do tego byłby podobny do następującego (należy to zmienić w zależności od sposobu interakcji z bazą danych itp.):

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

Spróbuj zrozumieć, co tutaj robię, zamiast po prostu implementować to dosłownie. Gdy poznasz funkcje rekurencyjne, otworzy się dla Ciebie zupełnie nowy świat.

Pamiętaj również, że Twoja tabela db może zostać zmieniona, aby uprościć ten kod



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klucz obcy w alternatywie tabeli myisam?

  2. jak usunąć zduplikowane wiersze z tabeli w mysql

  3. Czy istnieje jakiś typ danych tablicowych w MySQL, jak w PostgreSQL?

  4. Zapytanie SQL nie wyświetla pierwszego wyniku?

  5. OPCJE WYJŚCIA SNMP — Jak uzyskać tylko wartość odpowiedzi OID?