Rekursives Menu - Baum bleibt nicht offen!

Pullmann

Erfahrenes Mitglied
HI ,

so ich habe ein rekursives Menu geschrieben das denn so aussieht :
PHP:
<?
	$dbcnx=@mysql_connect('localhost','root','');
	if(!$dbcnx){
	echo("Zur Zeit keine Verbindung zum Server möglich , SQL 
    ERROR: ".mysql_error());
	exit();
	}
	
	if (! @mysql_select_db('test')){
	echo("Zur Zeit keine Verbindung zur CMS Datenbank möglich , SQL 
    ERROR: ".mysql_error());
	exit();
	}
	
	$result = @mysql_query("SELECT menuid,value FROM menu WHERE 
    parentid='0' ");
	if(!$result){
	echo("Fehler in der News Datenbank , SQL ERROR: "
    .mysql_error());
	exit();
	}
	
	while($row =mysql_fetch_array($result)){
	$menuid = $row["menuid"];
	$value = $row["value"];
	
	echo "<a href='rekursivessubmenu.php?selectid=".$menuid ."'>"
                .$value ."</a><br> ";
	$space=0;
	if ($menuid == $_REQUEST['selectid'])
	rekursiv($menuid,$space,$_REQUEST['selectid']);
	}
	
function rekursiv($menuid,$space,$selectid){

	$result = @mysql_query("SELECT menuid,value,parentid FROM menu 
    WHERE parentid='".$menuid."' ");
	if(!$result){
	echo("Fehler in der News Datenbank , SQL ERROR: "
    .mysql_error());
	exit();
	}
	$space++;
	$frei=0;
	while($row =mysql_fetch_array($result)){
	$menuid = $row["menuid"];
	$value = $row["value"];
	$parentid = $row["parentid"];
		
	while($frei < $space){
	$ausgabe .="-";
	$frei++;
	}
	
	$ausgabe .= "<a href='rekursivessubmenu.php?"
    ."selectid=".$menuid."'>".$value ."</a><br> ";
	
	echo $ausgabe;
	$ausgabe='';
	$frei=0;
	
	rekursiv($menuid,$space,$selectid);
	}
	$space--;

}

?>

In der Datenbank sind die Spalten menuid , value & parentid .

Das Problem das ich jetzt habe ist es wie mache ich es das es sich richtig öffnen lässt .
Aus der ersten Ebene heraus ist das kein Problem aber wenn man dann in die Zweite
Ebene klickt schließt sich der Baum wieder und mann sieht nur die erste ...

Ich müsste warscheinlich in der Funktion noch eine If Abfrage starten aber mit welchen
Parametern ?


MfG Julian
 
Zuletzt bearbeitet:
Kp was mich da geritten hat das mal zu machen ;)
PHP:
<?
$dbcnx=@mysql_connect('localhost','root','');
if(!$dbcnx){
    echo("Zur Zeit keine Verbindung zum Server möglich , SQL
    ERROR: ".mysql_error());
    exit();
}

if (! @mysql_select_db('test')){
    echo("Zur Zeit keine Verbindung zur CMS Datenbank möglich , SQL
    ERROR: ".mysql_error());
    exit();
}

$result = @mysql_query("SELECT menuid,value FROM menu WHERE
parentid='0' ");
if(!$result){
    echo("Fehler in der News Datenbank , SQL ERROR: "
    .mysql_error());
    exit();
}

while($row =mysql_fetch_array($result)){
    $menuid = $row["menuid"];
    $value = $row["value"];
    
    echo "<a href='rekursivessubmenu.php?selectid=".$menuid ."'>"
                .$value ."</a><br> ";
    $space=0;
    if ($menuid == $_REQUEST['selectid'])
        rekursiv($menuid,$space,$_REQUEST['selectid']);
}
    
function rekursiv($menuid,$space,$selectid){
    $result = @mysql_query("SELECT menuid,value,parentid FROM menu
    WHERE parentid='".$menuid."' ");
    if(!$result){
        echo("Fehler in der News Datenbank , SQL ERROR: "
        .mysql_error());
        exit();
    }
    $space++;
    $frei=0;
    while($row =mysql_fetch_array($result)){
        $menuid = $row["menuid"];
        $value = $row["value"];
        $parentid = $row["parentid"];
            
        while($frei < $space){
            $ausgabe .="-";
            $frei++;
        }
    
        $ausgabe .= "<a href='rekursivessubmenu.php?"
        ."selectid=".$menuid."'>".$value ."</a><br> ";
        
        echo $ausgabe;
        $ausgabe='';
        $frei=0;
        
        rekursiv($menuid,$space,$selectid);
    }
    $space--;
}
?>
 
Zurück