FinalFantasy Geschrieben 28. August 2004 Teilen Geschrieben 28. August 2004 Hallo, ich möchte mir auf meiner Homepage ein kleines Forum machen, und zwar solldabei ein Treeview der Postings angezeigt werden. Ich habe in der Datenbanktabelle die Felder ID - Eindeutige Nummer für jedes Post Followup - Übergeordnetes Post Eben - Ebene des Post Die Frage ist jetzt, wie bekomme ich daraus einen Treeview? Die einzige Möglichkeit die mir bis jetzt eingefallen ist, wäre, dass ich für jedes Post einen neuen Select mache, indem ich überprüfe ob es auf diese Nachricht schon eine Antwort gibt. Also etwa so: select * from tabelle where followup = akutelle_id. Das ganze in eine rekursive Funktion gepackt, und der Endpunkt ist, wenn es keine Antworten gibt. Jedoch würden dass schon bei ein paar Postings ziemlich viele Select Abfragen sein, vor allem weil ich auf schlecht feststellen kann, welches Post schon gefunden wurde und ich so auch noch unnötige Abfragen habe. Weiss noch jemand eine andere Möglichkeit? Ich kann auch die DB-Tabelle ändern, falls da jemand eine Möglichkeit weiss. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 28. August 2004 Teilen Geschrieben 28. August 2004 Hi, schau dir mal: Das 'Nested Sets' Modell - Bäume mit SQL http://www.develnet.org/36.html an. Ist aber nicht gerade einfach. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 28. August 2004 Autor Teilen Geschrieben 28. August 2004 hmm, wird das auch in richtigen Foren verwendet? Das Einfügen von Posts ist ja wirklich sehr aufwändig. I hab da noch ne andere Idee, muss ich mal morgen testen, ob die so funktioniert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 30. August 2004 Autor Teilen Geschrieben 30. August 2004 Ich hab das mit den Nested Sets jetzt mal ausprobiert, und ich glaub ich habe das auch soweit verstanden. Nur was ich absolut nicht verstehe ist der Select zum Auslesen des Baumes. SELECT node1.payload, COUNT(*) AS level FROM bl_f_msg as node1, bl_f_msg as node2 WHERE node1.root_id = 1 AND node2.root_id = 1 AND node1.lft BETWEEN node2.lft AND node2.rgt GROUP BY node1.lft[/PHP] Ich versteh da gar nicht, warum das rauskommt, was rauskommt. Hab schon einwenigs rumprobiert, aber bin zu keinem Ergebnis gekommen. Ich bräuchte es halt so, dass der Select nicht nur den Teilbaum mit der Wurzel 1 ausspuckt, sondern eben alle. Aber das kommt sich ja mit dem COUNT(*) ins Gehege. Die andere Möglichkeit wäre natürlich wieder, erst alle root_ids auszulesen, und anschliessend diesen Select für jede root_id einmal auszuführen, was aber uU wieder ziemlich viele selects gibt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 30. August 2004 Teilen Geschrieben 30. August 2004 Post 1: Ja, manche Foren setzen das ein, da ja viel öfter gelesen wird als geschrieben. Post 2: Jeder Thread hat eine Wurzel. Wieso willst du mehrere Threads auf einmal anzeigen? Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 31. August 2004 Autor Teilen Geschrieben 31. August 2004 Weil ich eigentlich ursprünglich wollte, dass alle Threads komplett ausgeklappt sind, wie im Windows Explorer, da kannst du auch mehrere Verzeichnisse gleichzeitig ausklappen. Habs aber jetzt so gelöst, dass man nur die ganzen Wurzeln zieht, und nur ein Thread ausgeklappt wird. Den SELECT versteh ich aber immernoch nicht ganz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.