Mailinglisten-Archive |
Hallo Juri, > es ist nicht sinnvoll. Der Grund ist ganz einfach - man > muss ALLE Seiten mit einer Query auslesen, und mit rekursiven > Funktionen bearbeiten, bis ein Array mit passender Strukture > erstellt wird. Hat man 500 Seiten, dauert's halt > dementsprechend, obwohl meinetwegen nur 10 Menu-Points > angezeigt werden > sollen. Schlecht. Hmm, mal angenommen ich möchte einen Diskussionsfaden darstellen. Meine Daten würden in einer solchen Tabelle gespeichert sein: Table: Posting Id | Parent_Id | Title | Text | ---+-----------+--------------------+-----------------------------+ 1 | 0 | tit1 | jkasdhkasjhdjkash | 2 | 0 | tit2 | sjdhkasjhdsadsjahd | 3 | 1 | tit1.1 | djfhsdnxkjcnxcjhvciuziuz | 4 | 1 | tit1.2 | vxcy6xutcuxztcyxuzctyuxzct | 5 | 3 | tit1.1.1 | 8xc7v6xc6v87x6v78cxv | was ich machen würde um den Diskussionsfaden anzuzeigen wäre: Die Daten aus der DB in ein Array speichern: $result = _(at)_mysql_query("SELECT Id, Parent_Id, Title FROM Posting"); $i = 0; $arr = array(); while (list($id, $parent_id, $title) = _(at)_mysql_fetch_row($result)) { $arr[$i]["id"] = $id; $arr[$i]["parent_id"] = $parent_id; $arr[$i]["title"] = $title; $i++; } In meinem Beispiel komme ich somit auf 5 Einträge im Array. Wenn ich 500 Einträge habe, dann eben auf 500. Aber wann tritt bei Dir der Fall auf, dass aus 500 Einträgen 10 werden und die übrigen 490 Overhead sind? Also weiter: ich habe nun ein Array gefüllt mit allem was ich brauche, um den Treeview zu basteln. Und das mit einer einzigen Query! Naja, jetzt fehlt mir halt nur noch ein Satz von Funktionen um Array-Elemente effizient herauszufiltern. Nochmal zu meinem Beispiel: $result_arr = array_query("SELECT id, title FROM $arr WHERE parent_id = 3"); Wenn das Deine Bibliothek kann, würde ich mich über eine Kopie sehr freuen :-) > Die ideale Vorgehensweise - nur das auslesen, was > tatsaechlich angezeigt > wird. Und mit einem Query, maximal zwei. Deswegen ist IMHO > http://www.koehntopp.de/kris/artikel/sql-self-references/ schon der > richtige ich finde das Verfahren einfach zu kompliziert, wenn man doch nur eine einfache Treeview realisieren möchte. Und das Vater-Sohn-Verfahren finde ich relativ simpel. Ich möchte nur einfach von den vielen verschachtelten DB-Queries weg...hin zu vielen verschachtelten "Array-Queries". > Einsatz ( evtl. ein paar zusaetzliche Fields fuer eigene > Zwecke). Hat auch > einige Nachteile gegenueber Vater<->Sohn Verfahren. Aber, > diese Nachteile > sind nur im Bereich Nodes move und insert zu sehen. Wie oft passieren > diese Ereignisse im Vergleich mit dem Auslesen von Tree ? In meiner speziellen Anwendung selten bis gar nicht. Deswegen sehe ich auch keinen Vorteil in Kristians Variante gegenüber der klassischen ID/Parent_Id-Variante. Ist doch nur ein blöder Baum! ;-) Trotzdem Danke für Deine ausführliche Antwort. Wenn möglich, schick mir bitte mal Deine Klasse zu.... Tschö, Arash
php::bar PHP Wiki - Listenarchive