phpbar.de logo

Mailinglisten-Archive

[php] Baum-Darstellung

[php] Baum-Darstellung

René Thiel reti at rennkuckuck.de
Sam Mar 27 20:20:42 CET 2004


---- 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