Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membina Hierarki Kategori dalam PHP dan MySQL?

Bagaimana untuk Membina Hierarki Kategori dalam PHP dan MySQL?

DDD
DDDasal
2024-10-23 21:01:30533semak imbas

How to Construct a Category Hierarchy in PHP and MySQL?

Hierarki Kategori dalam PHP dan MySQL

Dalam struktur pangkalan data biasa, kategori disusun mengikut hierarki, dengan kategori induk yang mengandungi kategori anak . Mendapatkan semula hierarki ini daripada pangkalan data MySQL boleh menjadi tugas yang mencabar. Artikel ini meneroka cara membina hierarki kategori dengan berkesan menggunakan PHP dan MySQL.

Model Senarai Bersebelahan

Model senarai bersebelahan mewakili data hierarki dengan menyimpan hubungan ibu bapa-anak dalam satu meja. Setiap baris dalam jadual mengandungi ID kategori dan ID induknya. Model ini membolehkan untuk mendapatkan semula pepohon kategori dengan cekap menggunakan satu pertanyaan SQL.

Menjana Hierarki

Untuk menjana hierarki kategori, kami menggunakan kod PHP berikut:

<code class="php">$refs = array();
$list = array();

$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";
$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;
    }
}</code>

Kod ini berulang melalui set hasil, mencipta rujukan kepada setiap kategori dalam tatasusunan. Ia menggunakan perhubungan ibu bapa-anak untuk membina tatasusunan berbilang dimensi yang mewakili hierarki.

Mencipta Senarai Output

Untuk memaparkan hierarki, kami menggunakan fungsi rekursif:

<code class="php">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;
}</code>

Fungsi ini mengambil tatasusunan berbilang dimensi dan menjana senarai tidak tertib HTML yang mewakili hierarki kategori. Ia merentasi hierarki secara rekursif, mencipta senarai bersarang mengikut keperluan.

Atas ialah kandungan terperinci Bagaimana untuk Membina Hierarki Kategori dalam PHP dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn