Hallo zusammen!
Ich verzweifel gerade... Folgendes Problem:
Für ein Menu, welches aus einer Datenbank generiert werden soll, benutz ich eine rekursive Funktion, da ich halt vorher nicht weiss, wie viele ebenen das Menu jeweils hat! hier der Code der funktion:
solange ich nicht rekursiv arbeite, funktioniert die funktion wunderbar, es gibt mir die Links der ersten ebene schick aus!
Sobald ich aber die generate_menu() mit den entsprechenden werten (welche also alle submenus der entprechenden id sucht) werden die Submenus auch wunderbar ausgegeben, leider aber immer nur das erste... danach bricht er die übergeordnete funktion ab!
ein zurückspringen auf die ebene davor erfolgt also nicht mehr...
also statt
-link 1
--sub_1
---sub_sub1
--sub_2
-link2
-link2
#macht er nur noch:
-link 1
--sub_1
---sub_sub1
und hört dann auf
hab ich irgendwas übersehen oder funktionert das ganze - so wie ich es mir vorstelle - gar nicht?
arbeite zum ersten mal mit ner rekursiven funktion, deswegen weiss ich halt nicht, obs n grundsätzlicher fehler ist oder ich einfach nur was falsch gemacht habe!
mfg
und vielen dank im Vorraus!
Duras
Ich verzweifel gerade... Folgendes Problem:
Für ein Menu, welches aus einer Datenbank generiert werden soll, benutz ich eine rekursive Funktion, da ich halt vorher nicht weiss, wie viele ebenen das Menu jeweils hat! hier der Code der funktion:
Code:
function generate_menu($sub_of = "0", $parent_dir = "", $ebene = "1") { global $conn; global $tpl; $sql = "SELECT id, sub_exists, name, link_title, description FROM 08_menu WHERE sub_of = '$sub_of' ORDER BY rangfolge"; $rs = mysql_query($sql,$conn); while ($row = mysql_fetch_array($rs,MYSQL_ASSOC)) { $parent = $parent_dir; $parent .= $row[name]."/"; $tpl->replace("link_title",$row[link_title]); $tpl->replace("link_name",$parent); $output .= $tpl->getoutput("navi_link_bit".$ebene); if($row[sub_exists] == 1) { $output .= generate_menu($row[id],$parent,$ebene++); } } return $output; }
solange ich nicht rekursiv arbeite, funktioniert die funktion wunderbar, es gibt mir die Links der ersten ebene schick aus!
Sobald ich aber die generate_menu() mit den entsprechenden werten (welche also alle submenus der entprechenden id sucht) werden die Submenus auch wunderbar ausgegeben, leider aber immer nur das erste... danach bricht er die übergeordnete funktion ab!
ein zurückspringen auf die ebene davor erfolgt also nicht mehr...
also statt
-link 1
--sub_1
---sub_sub1
--sub_2
-link2
-link2
#macht er nur noch:
-link 1
--sub_1
---sub_sub1
und hört dann auf
hab ich irgendwas übersehen oder funktionert das ganze - so wie ich es mir vorstelle - gar nicht?
arbeite zum ersten mal mit ner rekursiven funktion, deswegen weiss ich halt nicht, obs n grundsätzlicher fehler ist oder ich einfach nur was falsch gemacht habe!
mfg
und vielen dank im Vorraus!
Duras
Kommentar