Hallo zusammen,
ich habe ein Menü welches durch Rekursion aufgebaut wird, die Daten werden aus einer MySQL Datenbank geholt. Mein Problem ist jetzt, dass wenn ich auf einen der Hauptmenüpunkte klicken sich alle anderen Menüs auch aufmachen. Was nicht sein sollte. Ich habe es zwar schon geschafft das sich nur das jeweilige Menü aufmacht, nur dann werden nicht mehr alle Subkategorien ausgelesen.
Kann ich eine Rekursion irgendwie Steuern? Sprich, dass ich sage nur bis dahin und nicht weiter und dann wenn ich auf den anderen Menüpunkt klicke sich dieses aufmacht!??
Hier mal der Code:
So hab ich es jetzt gelöst! Es würde auch schon fast funktionieren. Das einzige was jetzt noch nicht funzt ist dass wenn ich eine der Hauptkategorien anklicke, sollte sich danach alles unter diesem Menü öffnen also die gesamten Submenüs - der gesamten Baum.
Beispiel:
HAUPT1 <-- Hier wird drauf gelickt
HAUPT2
HAUPT3
HAUPT1 <-- Und so soll danach aussehen
Sub1
SubSub1
Sub2
SubSub1
SubSub2
HAUPT2
HAUPT3
Keiner eine Idee?? ;(
ich habe ein Menü welches durch Rekursion aufgebaut wird, die Daten werden aus einer MySQL Datenbank geholt. Mein Problem ist jetzt, dass wenn ich auf einen der Hauptmenüpunkte klicken sich alle anderen Menüs auch aufmachen. Was nicht sein sollte. Ich habe es zwar schon geschafft das sich nur das jeweilige Menü aufmacht, nur dann werden nicht mehr alle Subkategorien ausgelesen.
Kann ich eine Rekursion irgendwie Steuern? Sprich, dass ich sage nur bis dahin und nicht weiter und dann wenn ich auf den anderen Menüpunkt klicke sich dieses aufmacht!??
Hier mal der Code:
PHP:
function getSubnav($sub_id, $pos=0, $selected_id="",$katid="",$subkat="")
{
$alle_kategorien=mysql_query("SELECT * FROM produktcms_kat WHERE subkat='$sub_id' ORDER BY rang");
while($kat=mysql_fetch_array($alle_kategorien))
{
if($sub_id == 0)
{
print '<table width="212" border="0" cellspacing="0" cellpadding="2">';
print '<tr><td width="16" bgcolor="#C7D6F1"';
if($katid!=$kat[katid] || $subkat==$kat[subkat]) print ' class="linesubnav"';
print '><img src="img_allg/icon_subnav.gif" width="16" height="8" border="0"></td>';
print '<td align="left" bgcolor="#C7D6F1"';
if($katid!=$kat[katid] || $subkat==$kat[subkat]) print ' class="linesubnav"';
print '><a href="produkte_uebersicht.php?katid='.$kat[katid].'&show=1&subkat='.$kat[subkat].'" class="subnav">';
print $kat[bezeichnung].'</a></td><tr></table>';
}
else
{
if($_GET['show']==1 || $katid==$kat[subkat] && $subkat==$katid)
{
print '<table width="212" cellpadding="1" border="0" cellspacing="0" bgcolor="#C7D6F1">';
print '<tr valign="top">';
echo linie($pos,"<td width='10'></td>");
print '<td width="17" align="right" valign="top">';
print '<img src="img_allg/icon_subnavkl.gif" width="12" height="10" border="0"></td>';
print '<td width="189" align="left"><a href="produkte_uebersicht.php?katid='.$kat[katid].'&show=1&subkat='.$kat[subkat].'" class="subnavkl">'.$kat[bezeichnung].'</a></td>';
print '</tr>';
print "</table>\n";
}
}
getSubnav($kat[katid],$pos+1,"",$kat[katid],$kat[subkat]);
}
}
So hab ich es jetzt gelöst! Es würde auch schon fast funktionieren. Das einzige was jetzt noch nicht funzt ist dass wenn ich eine der Hauptkategorien anklicke, sollte sich danach alles unter diesem Menü öffnen also die gesamten Submenüs - der gesamten Baum.
Beispiel:
HAUPT1 <-- Hier wird drauf gelickt
HAUPT2
HAUPT3
HAUPT1 <-- Und so soll danach aussehen
Sub1
SubSub1
Sub2
SubSub1
SubSub2
HAUPT2
HAUPT3
Keiner eine Idee?? ;(
PHP:
function getTree($id,$lpos)
{
global $katid;
global $subkat;
global $wahl;
static $ebene = 0;
$erg[$ebene] = mysql_query("SELECT * FROM `produktcms_kat` WHERE `subkat` = '$id'");
$menge = mysql_num_rows($erg[$ebene]);
for ($lo=0;$lo<$menge;$lo++)
{
$row = mysql_fetch_row($erg[$ebene]);
if($row[1]==0)
{
print '<table width="212" border="0" cellspacing="0" cellpadding="2">';
print '<tr><td width="16" bgcolor="#C7D6F1"';
if($katid!=$row[0]) print ' class="linesubnav"';
print '><img src="img_allg/icon_subnav.gif" width="16" height="8" border="0"></td>';
print '<td align="left" bgcolor="#C7D6F1"';
if($katid!=$row[0]) print ' class="linesubnav"';
print '><a href="produkte_uebersicht.php?katid='.$row[0].'&pos='.$lpos.'|'.$row[0].'&subkat='.$row[1].'" class="subnav">';
print $row[2].'</a></td><tr></table>';
}
else
{
print '<table width="212" cellpadding="1" border="0" cellspacing="0" bgcolor="#C7D6F1">';
print '<tr valign="top">';
if($ebene >0){echo str_repeat("<td> </td>",$ebene);}
print '<td width="17" align="right" valign="top">';
print '<img src="img_allg/icon_subnavkl.gif" width="12" height="10" border="0"></td>';
print '<td width="189" align="left"><a href="produkte_uebersicht.php?katid='.$row[0].'&pos='.$lpos.'|'.$row[0].'&subkat='.$row[1].'" class="subnavkl">'.$row[2].'</a></td>';
print '</tr>';
print "</table>\n";
}
if($row[0] == $wahl[$ebene+1])
{
$ebene++; # ein Level hoch
getTree($row[0],$lpos."|$row[0]");
$ebene--; # und wieder ein Level runter
}
}
}