Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hirarki Kategori (PHP/MySQL)

Saat menggunakan model daftar adjacency, Anda dapat membuat struktur dalam sekali jalan.

Diambil dari One ​​Pass Parent- Struktur Array Anak (Sep 2007; oleh 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;
    }
}

Dari artikel tertaut, inilah cuplikan untuk membuat daftar keluaran. Bersifat rekursif, jika ada anak untuk sebuah simpul, ia akan memanggil dirinya sendiri lagi untuk membangun subpohon.

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;
}

Pertanyaan Terkait:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa keuntungan menggunakan hubungan tabel satu-ke-satu? (MySQL)

  2. Kesalahan MySQL:daftar SELECT tidak ada dalam klausa GROUP BY

  3. Bagaimana cara menyimpan data yang berisi kutipan di MySQL

  4. dapatkan nilai desimal mentah dari kueri mysqldb

  5. mysqli::query():Tidak dapat mengambil mysqli