Philipp Hasenfratz: "Verschachtelte" Einträge ausgeben

Beitrag lesen

Halihallo Thomas

Dann reihe ich die Felder so wie ich sie haben möchte, und bei der Ausgabe prüfe ich ab ob die Subid mit der Id der vorigen Dateinreihe übereinstimmt.

Das wird so nicht funktionieren [1]. Du musst die SubID mit *jeder*
vorangegangenen ID vergleichen und den Datensatz als "Child" also
Unterknoten dort einfügen, wo die SubID=ID ist.
Zudem ist die Namengebung von SubID etwas entfremdend. SuperID oder
ParentID wäre etwas "treffender" gewählt, IMHO zumindest.

Hättest Du da viellicht noch eine bessere bzw. günstigere Lösung?

Das ist stark davon abhängig, wie du die Daten nachher vorliegen
haben möchtest. Geht es darum eine Art Verschachtelte-HTML-Table-
Struktur einfach an den Browser auszugeben, oder diese
Verschachtelung in einem Array vorliegen zu haben?
Die einfachste und intuitivste Methode ist die Rekursion.

function rekursion(ParentID) {
  // selektiere alle Knoten, die ParentID als <ParentID> haben.
  // falls keine selektiert wurden, return "fertig"
  foreach (Knoten in Ergebnis der vorherigen Abfrage) {
    rekursion(<ID-Des-Knotens>) // das wird der neue Parent für den
                                // nächsten Rekursionsschritt
  }
}

Eine Ausgabe als HTML-Table oder <ul>-Liste ist so wirklich leicht
umzusetzen.

Was willst du machen?

[1] Du gehst von der Annahme aus, dass alle Daten schön der Reihe
nach in der DB abgelegt sind (die Reihenfolge ist *nicht* umbedingt
über die ID rekonstruierbar; stell dir vor, dass du nach neun
plötzlich eine 3.5 als Unterknoten von "zwei" machen möchtest) und
dass es keine Schritte "nach oben innerhalb der Hierarchie" gibt.

Viele Grüsse

Philipp