Heim  >  Artikel  >  Datenbank  >  Wie erstellt man eine Kategoriehierarchie in PHP und MySQL?

Wie erstellt man eine Kategoriehierarchie in PHP und MySQL?

DDD
DDDOriginal
2024-10-23 21:01:30531Durchsuche

How to Construct a Category Hierarchy in PHP and MySQL?

Kategoriehierarchie in PHP und MySQL

In einer typischen Datenbankstruktur sind Kategorien hierarchisch organisiert, wobei übergeordnete Kategorien untergeordnete Kategorien enthalten . Das Abrufen dieser Hierarchie aus einer MySQL-Datenbank kann eine anspruchsvolle Aufgabe sein. In diesem Artikel wird untersucht, wie Sie mithilfe von PHP und MySQL effektiv eine Kategoriehierarchie erstellen.

Adjazenzlistenmodell

Das Adjazenzlistenmodell stellt hierarchische Daten dar, indem es Eltern-Kind-Beziehungen speichert ein einzelner Tisch. Jede Zeile in der Tabelle enthält die ID der Kategorie und die ID ihres übergeordneten Elements. Dieses Modell ermöglicht das effiziente Abrufen des Kategoriebaums mithilfe einer einzigen SQL-Abfrage.

Generieren der Hierarchie

Um die Kategoriehierarchie zu generieren, verwenden wir den folgenden PHP-Code:

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

Dieser Code durchläuft die Ergebnismenge und erstellt Verweise auf jede Kategorie in einem Array. Es verwendet Eltern-Kind-Beziehungen, um ein mehrdimensionales Array zu erstellen, das die Hierarchie darstellt.

Erstellen einer Ausgabeliste

Um die Hierarchie anzuzeigen, verwenden wir eine rekursive Funktion:

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

Diese Funktion verwendet das mehrdimensionale Array und generiert eine ungeordnete HTML-Liste, die die Kategoriehierarchie darstellt. Es durchläuft rekursiv die Hierarchie und erstellt nach Bedarf verschachtelte Listen.

Das obige ist der detaillierte Inhalt vonWie erstellt man eine Kategoriehierarchie in PHP und MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn