Hallo,
Ich habe ein kleines Problem bei einer rekursiven Funktion, diese Funktion dient dazu mein Menü auszugeben. Weill ich mit der Template Klasse Smarty arbeite kann ich den return wert nicht als string zurückgeben sondern als ein array und da ist dann auch das Problem.
Hier erstmal der aufbau von meiner DB=> jag_menu:
klick hier !
So nun zu der Funktion:
PHP-Code:
<?php
/* Menü Funktion
* >> Eine Rekrusive Funktion um das Menü auszugeben.
*/
function menu_ausgeben($ausrichtung,$zuordnung=0,$schluessel="") {
global $db,$mysql,$user_ist_angemeldet;
static $box;
$menuquery = $db->sql_normal_query("SELECT
menuid,ausrichtung,sortierung,zuordnung,titel,name,fertiges_modul,pfad_zum_modul,modul,rechte
FROM
".$mysql['prefix']."_menu
WHERE
ausrichtung='".$ausrichtung."' AND zuordnung='".$zuordnung."'
ORDER BY
zuordnung,sortierung ASC");
while($menu = $db->sql_fetch_object($menuquery)){
//> Boxen ausgeben.
if($menu->rechte != FALSE && $user_ist_angemeldet == TRUE) {
#> Wird später definiert
} else if($menu->rechte == FALSE) {
if($menu->titel == "ja" && $menu->fertiges_modul == "nein") {
$box = array($menu->name => "");
} elseif ($menu->titel == "ja" && $menu->fertiges_modul == "ja") {
$box = array($menu->name => array(0 => "../".$menu->pfad_zum_modul));
} elseif($menu->titel == "nein" && $schluessel !="") {
$box[$schluessel] = array($menu->modul => $menu->name);
}
menu_ausgeben($ausrichtung,$menu->menuid,$menu->name);
}
}
return $box;
}
?>
So wird die Funktion ausgeführt:
PHP-Code:
<?php
/* Menu.
* <1> Menu für die Linke Seite ausgeben.
*/
$menu_links = menu_ausgeben("links");
$smarty->assign("menu_links",$menu_links);
?>
So mein Problem ist das er mir nich alles ausgibt sondern nur ein teil!
Habe mal print_r() angewendet und da sieht es dann so aus:
Array ( [Homepage] => Array ( [2] => Server Regeln ) )
sollte aber so aussehen:
Array([Login] => Array([0] => modul/templates/login.html),[Homepage] => Array([1] => Startseite, [2] => Server Regeln))
Hoffe irgendwer sieht den fehler in meiner Funktion :)
MfG Funjoy
Ps: Ich habe auch schon anstatt
static $box; global $box; versucht macht kein unterschied. Ich glaube mal ich setzt die Rekrusive Funktion Falsch.