Mailinglisten-Archive |
---- Original Message ---- From: "Tim Hildebrandt" <TConnect at gmx.net> Hallo Tim, erstmal danke für die Ausführungen. > 1. ist es machbar, die Abfragen rekursiv auszuführen? Das habe ich leider noch nicht raus: wie programmiere ich es, daß die eine Abfrage verschachtelt ausgeführt wird, bis kein Ergebnis mehr geliefert wird, ohne: if (x1) { call if (x2) { call if (x3) { call } } } usw., also unabhängig von der Ebenentiefe??? > 2. muß immer der gesamte Baum geladen werden oder reicht es, einen > Knoten weiter zu verfolgen? > zu 2. Nein, Baum nur an den jeweiligen Knoten öffnen und nicht immer > alles laden. > Mittels dieser Überlegungen begrenzt Du die Anzahl der SQL-Queries auf > maximal die Ebenentiefe. Ich denke, da man nicht soooo oft über > Ebenentiefe 5 kommt, sollte der Server das auch bei vielen Zugriffen > verpacken. Andererseits verfolgt der Nutzer immer nur den Weg in die > Ebenentiefe abwärts, den er mittels der jeweiligen (+) Knoten > geöffnet hat. Andere Ebenentiefen woanders interessieren ihn nicht. Richtig, das Beispiel 1 war nur Verdeutlichung meines grafischen Problems gedacht. In der Anwendung sind Links hinterlegt, die nur diesen Zweig abfragen. Das Beispiel 2 (grafisch jetzt gelöst - im Projekt, nicht im Beispiel!) stellt mit nur einer DB-Abfrage alles dar und verweist dann auf 1. > Die Generierung des Typ 1 hat bei mir total lange gedauert. Das liegt überwiegend an der zu übertragenden Menge an HTML-Code zur grafischen Aufbereitung (was vielleicht noch optimiert werden kann). > Die Ebenentiefe ergibt sich bildlich aus der Anzehl der / Slashes. Die > jeweils nächst tiefere Ebene erreichst Du in der Query also immer > durch den jeweils aktuellen Pfad selbst in Verbindung mit dessen > count der split-Funktion. Angenommen, Du wolltest die Ebene unterhalb > von Person/Müller haben, dann wäre die Query: > > $q = "SELECT * FROM tabelle WHERE path like '" . $path . "%' AND > layer = " . count(split("/", $path)); Leider habe ich keine Chance mehr, die umfangreiche Tabelle zu modifizieren. Zu Beginn des Projekts wurde nur verlangt, daß max. 5 Ebenen dargestellt werden können. Also habe ich nur ID und Vater-ID als Felder zur Verfügung. Daher kann ich dies wohl nur mit PHP lösen... René Thiel (Rennkuckuck) mailto:reti at rennkuckuck.de
php::bar PHP Wiki - Listenarchive