hui wow…
das Ding hats echt in sich… aber vielleicht sag ich das auch nur, weil ich es immernoch nicht verstehe *ggg*
kannst Du mir mal noch ein wenig helfen?
mal angepasst und kommentiert was ich so verstehe…
function rec($wert,$node)
{
global $tblnavi, $click;
$query = mysql\_query("select \* FROM $tblnavi where ref\_id=$wert"); //Daten werden geholt (erstaufruf = oberste Ebene)
$data=""; //data wird geleert??? warum?
$occured=0;
$oldoccured=0;
while ($row = mysql\_fetch\_array($query)) //die ergebnisse werden einzeln durchgearbeitet
{
$data.=$row[titel]."
"; //data wird belegt mit dem Titel des DB eintrags...
if ($row[id]==$click) //wenn die id mit dem "click" übereinstimmt....
{
$occured=1; //wird das mal auf 1 gesetzt (wird unten geprüft)
}
if ($node==0) //wenn es nicht aufgetreten ist wird die schleife ausgeführt...
{
list($newdata,$newoccured)=rec($row[id],$occured); //...die die Variablen newdata und newoccured für unten belegt mit den resultaten, die die Funktion selbst zurückliefert. Dabei werden alle untergeordneten Beiträge geprüft, ob dort $click übereinstimmt und dieser Zweig angezeigt werden soll
if ($newoccured==1) //wenn ja
{
$data.=$newdata."
"; //wird hier der neue $data-Wert belegt...
}
}
if ($oldoccured==1 || $occured==1 || $newoccured==1) //wenn eines davon auf 1 gesetzt wird soll das behalten werden
{
$oldoccured=1; //weswegen der oldoccured wert auf 1 gesetzt wird
}
$occured=0; //warum das denn?
}
return array($data,$oldoccured);
}
$oldoccured kann glaub ich beim letzten if nicht 1 sein, weil er nur danach gesetzt wird wenn ich das richtig sehe…
Nun aber noch ein kleines weiteres Problem - $click ist ja normalerweise nicht belegt und soll dann ja die ganzen untergeordneten Zweige auch noch öffnen…
also ein
eins
zwei
drei
soll bei klick auf zwei dann so aus sehen:
eins
zwei
a;
b;
c;
drei
das funktioniert so noch nicht… Ich denke mal, dass ich da dann eine Funktion einfüge, die dann aufgerufen wird, wenn §click = $row[id] ist, oder wie würdest Du das lösen?
Jedenfalls schon mal ein sternchen für diese Lösung… Danke!!