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

Phân cấp danh mục (PHP / MySQL)

Khi sử dụng mô hình danh sách kề, bạn có thể tạo cấu trúc trong một lần chuyển.

Lấy từ One Pass Parent- Cấu trúc mảng con (tháng 9 năm 2007; bởi Nate Weiner) :

$refs = array();
$list = array();

$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";

/** @var $pdo \PDO */
$result = $pdo->query($sql);

foreach ($result as $row)
{
    $ref = & $refs[$row['item_id']];

    $ref['parent_id'] = $row['parent_id'];
    $ref['name']      = $row['name'];

    if ($row['parent_id'] == 0)
    {
        $list[$row['item_id']] = & $ref;
    }
    else
    {
        $refs[$row['parent_id']]['children'][$row['item_id']] = & $ref;
    }
}

Từ bài viết được liên kết, đây là một đoạn mã để tạo danh sách cho đầu ra. Nó là đệ quy, nếu có một nút con cho một nút, nó sẽ gọi lại chính nó để xây dựng cây con.

Hàm
function toUL(array $array)
{
    $html = '<ul>' . PHP_EOL;

    foreach ($array as $value)
    {
        $html .= '<li>' . $value['name'];
        if (!empty($value['children']))
        {
            $html .= toUL($value['children']);
        }
        $html .= '</li>' . PHP_EOL;
    }

    $html .= '</ul>' . PHP_EOL;

    return $html;
}

Câu hỏi liên quan:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để nhiều kết quả truy vấn để giảm số lượng truy vấn?

  2. Lỗi SOLR DataImport không thể thực hiện truy vấn

  3. Làm cách nào để MIN () và MAX () hoạt động trên chuỗi CHAR / VARCHAR trong MySQL?

  4. # 1222 - Các câu lệnh SELECT đã sử dụng có một số cột khác nhau

  5. cột dấu thời gian mysql