Moin
Wonach sortierst du genau? Zuerst nach Thread, und dann?
Ich fände es schön wenn du eine Lösung findest das zu sortieren ohne
dass ein nachträglicher Sort nötig ist, aber ich weis keine Möglichkeit.
Ich weiss nicht ob du meinen Feature Artikel zu dem Thema schon kennst, aber ich verwende auch eine ähnliche Art um die Daten flach in einer MySQL-Datenbank abzulegen und das zeichnen dann von einer rekursiven Funktion erledigen zu lassen, ohne dass zu jedem Posting alle Kindpostings im entsprechenden Eintrag der Datenbank stehen müssen.
Ich speichere die Nummer des Vaterpostings bei jedem Eintrag in der Datenbank, sowie das Datum (wenn du dir nicht sicher bist, das das Datum bei deinem System immer gradeaus geht, musst du dir halt irgendwas anderes suchen, was garantiert in eine Richtung wächst) des Eintragens. Bei der Ausgabe der Hauptdatei (für einen Thread geht das analog) lese ich alle Betreffzeilen aus und lasse sie von der Datenbank nach Datum sortieren. Damit sind sie im Prinzip schon in der richtigen Reihenfolge bloß die Verschachtelung ist noch nicht klar.
Beim Auslesen in ein Array brauche ich ohnehin eine Schleife und in dieser Schleife konstruiere ich auch noch die Vorwärtsverknüpfungen indem ich in einem Array an der Position die der Nummer des Vaterpostings des aktuellen Postings entspricht (kriege ich ja aus der Datenbank) an ein weiteres Array die Nummer des aktuellen Postings anhänge. Die Kindpostings eines Vaterpostings sind jetzt ja automatisch in der richtigen Reihenfolge, weil sie so aus der Datenbank kamen und die Threadstruktur ist durch die Vorwärtsverknüpfungen wiedergegeben. Der Overhead für diesen Schritt ist minimal (zwei bis dreimal aus dem Hauptspeicher lesen und einmal reinschreiben).
Jetzt kann eine rekursive Funktion (oder meinetwegen auch eine iterative Funktion mit Kellerspeicher) den Baum ganz einfach zeichnen.
--
Henryk Plötz
Grüße aus Berlin