Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Menu đa cấp từ các bản ghi cơ sở dữ liệu

Mã cho điều này sẽ giống như sau (Điều này sẽ cần được thay đổi theo bất kỳ cách nào bạn tương tác với cơ sở dữ liệu, v.v.):

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

Cố gắng hiểu những gì tôi đang làm ở đây thay vì chỉ thực hiện nó một cách nguyên văn. Một khi bạn biết các hàm đệ quy, một thế giới hoàn toàn mới có thể mở ra cho bạn.

Cũng lưu ý rằng bảng db của bạn có thể được thay đổi để làm cho mã này đơn giản hơn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng điều khiển MySQL chậm khi nhập các tệp SQL lớn

  2. Codeigniter VÀ HOẶC VÀ

  3. thụt lề không nhất quán với Python sau khi tách

  4. Tổng hợp số lần nhấp và lượt xem quảng cáo

  5. Danh sách các chỉ định định dạng ngày trong MySQL