In einer MySQL-Datenbank können Sie hierarchische Daten in einer Tabelle mit dem Namen „Kategorien“ mit Spalten für „category_id“ und „parent_id“ speichern. Um diese Daten in einer hierarchischen Struktur mit PHP abzurufen, befolgen Sie diese Schritte:
Daten aus der Datenbank abrufen:
Verwenden Sie eine SQL-Abfrage, um Rufen Sie alle nach Namen sortierten Kategorien ab:
<code class="php">$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name"; $result = $pdo->query($sql);</code>
Referenzarray erstellen:
Erstellen Sie ein assoziatives Array $refs, auf das Referenzen gespeichert werden jede Kategorie. Jede Referenz enthält die Eigenschaften parent_id und name. Fügen Sie Kategorien ohne übergeordnetes Element (parent_id = 0) zum Array $list hinzu.
<code class="php">$refs = array(); $list = array(); foreach ($result as $row) { $ref = &$refs[$row['category_id']]; $ref['parent_id'] = $row['parent_id']; $ref['name'] = $row['name']; if ($row['parent_id'] == 0) { $list[$row['category_id']] = &$ref; } else { $refs[$row['parent_id']]['children'][$row['category_id']] = &$ref; } }</code>
Verschachtelte HTML-Liste generieren:
Erstellen Sie eine rekursive Funktion toUL, um mithilfe des $list-Arrays eine verschachtelte HTML-Liste zu generieren. Es sollte nach untergeordneten Elementen suchen und sich selbst rekursiv aufrufen, um Teilbäume zu erstellen.
<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>
Hierarchie anzeigen:
Verwenden Sie zum Generieren die toUL-Funktion und zeigen Sie die hierarchische HTML-Liste an.
Ein hilfreiches Beispiel zum Abrufen einer verschachtelten HTML-Liste aus dem Array-Recordset eines Objekts finden Sie im Abschnitt „Verwandte Fragen“ im Referenzmaterial.
Das obige ist der detaillierte Inhalt vonWie rufe ich hierarchische Daten aus einer MySQL-Datenbank in PHP als verschachteltes HTML ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!