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!