problem mit Baum durchsuchen

Ok ich geb dir mal einen Beispiel Auszug wie sowas ausehen könnte.

PHP:
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.  
                       
    $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=\"index.php?pos=".$lpos."|".$row[0]."&amp;".strip_tags(SID)."\">".$row[1]."</a><br>"; 
		$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], ich werde noch näher darauf eingehen. 

        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("&nbsp;&nbsp;",$ebene);  //$ebene ist anzahl der wiederholungen des Sring (&rArr;)
        		echo ("<img src=style/menu.GIF width=15 height=14 class=back >");
        } 
       
        echo $menu; 
        if (isset($wahl[$ebene+1]) && $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
if (isset($_GET['pos'])){$wahl=mysql_escape_string($_GET['pos']);}Else{$wahl="";}
$wahl=str_replace("_","|",$wahl); // Für mod_rewrite zeichen übergabe wieder ändern
//echo $wahl;
$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 
if (isset($_GET['pos'])){$pos=mysql_escape_string($_GET['pos']);} #Get dem anderen link zwischen speichern
//var_dump($wahl[1]);
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] != "") { # wenn ein Eintrag vorhanden ist, per javascript aufrufen 
// Im Haupteil laden
      $Kname=$row[0];        
 } 
}

Mfg Splasch
 
Zuletzt bearbeitet:
Zurück