function baum($vater,$lpos) #vater welches menu wird gezeigt ; in lpos wird meine liste aufgebaut für den nächsten klick
{
global $link; # Der Link zur DB durch global auch in der Funktion bekannt.
global $wahl; # hier sind als Array die ids drin die aufgeklappt sind (kommt aus der var pos)
static $ebene = 0; # mit static erstelle ich eine Variable, die beim erneuten
# Aufruf der Funktion den Wert aus der Vorgängerfunktion behält.
# Die ist wichtig für die Rekursion. Der Startwert ist 0 und der
# wird hochgezählt beim Neuaufruf. Wenn ich also im Menu bei Apfel bin,
# ist der Wert bei 1.
$erg[$ebene] = mysql_query("SELECT * FROM `kategorie` WHERE On_off='j' and `Parent` = '$vater'order by K_sort",$link);
$menge = mysql_num_rows($erg[$ebene]);
# Das ist auch noch klar. Lese das aktuelle Menu aus der Datenbank aus und starte eine Schleife ...
for ($lo=0;$lo<$menge;$lo++) {
$row = mysql_fetch_row($erg[$ebene]); # Den Menu Eintrag auslesen, in $row[1] == Kname
# ist ja der menueintrag als text ..
// Änderung für html link
$Unterkat=str_replace(" ", "" , $row[1]);
$menu = '<a href="'.$Unterkat.$lpos.'_'.$row[0].'.html">'.$row[1].'</a><br>';
# Hier bastel ich den Link zusammen. Am schwersten zu verstehen ist wohl
# pos=$lpos|$row[0].
if ($ebene > 0) { # Hier rücke ich einfach nur ein, je tiefer ich im Menu(Rekursion)
# bin, umso mehr Leerzeichen vorne dran
echo str_repeat(" ",$ebene); //$ebene ist anzahl der wiederholungen des Sring (⇒)
echo ("<img src=style/menu.GIF width=15 height=14 class=back >");
}
echo $menu;
if ($row[0] == $wahl[$ebene+1]) { # Hier folgt der Aufruf der Funktion (ab in die Rekursion)
$ebene++; # ein Level hoch
baum($row[0],$lpos."_$row[0]"); // änderung von | auf _
$ebene--; # und wieder ein Level runter
}
}
}
// Strings entwerten
$wahl=mysql_escape_string($_GET['pos']);
$wahl=str_replace("_","|",$wahl); // Für mod_rewrite zeichen übergabe wieder ändern
$wahl = explode("|",$wahl); # aus meiner pos mache ich ein array wahl - wahl[1] hat inhalt 1
baum(0,""); # starte die Funktion, liste alles auf was als vater 0 hat
$pos=mysql_escape_string($_GET['pos']); #Get dem anderen link zwischen speichern
if (sizeof($wahl) > 0) { # nur wenn wahl vorhanden ist
$id = $wahl[sizeof($wahl)-1]; # den letzten Eintrag von wahl ermitteln
# was anzuzeigen ist, aus db holen
$erg = mysql_query("SELECT `Kname` FROM `kategorie` WHERE `Kat_id`='$id'",$link) or die(mysql_error());
$row = mysql_fetch_row($erg);
if ($row[0] != "") {
// Im Haupteil laden
$Kname=$row[0]; // Kname für Artikel &pos=".$pos."&".strip_tags(SID);
}
}