2010-01-17 4 views
0

Duplicate possible:
how to generate an dynamic arraygénération de menu dynamique en php

comment générer un menu dynamique qui ont sous-menu etc. qui ont magasin dans la base de données et le sous-menu show clic. S'il vous plaît aidez-moi je suis un développeur php plus frais.

+0

en double de la question posée par un même utilisateur http://stackoverflow.com/questions/2081324/dynamic-menu-generation- in-php – Joe

+2

@Joe êtes-vous bourré? – streetparade

+0

@Joe: mauvais lien, l'identifiant de la question de doublon est 2081108 –

Répondre

1

Ok d'abord créer les tables comme cette

CREATE TABLE `dyn_menu` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `label` VARCHAR(50) NOT NULL DEFAULT '', 
    `link_url` VARCHAR(100) NOT NULL DEFAULT '#', 
    `parent_id` INT(11) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`) 
) TYPE=MyISAM; 


Prepare your DB 

$sql = "SELECT id, label, link_url, parent_id FROM dyn_menu ORDER BY parent_id, id ASC"; 
$items = mysql_query($sql); 
while ($obj = mysql_fetch_object($items)) { 
    if ($obj->parent_id == 0) { 
     $parent_menu[$obj->id]['label'] = $obj->label; 
     $parent_menu[$obj->id]['link'] = $obj->link_url; 
    } else { 
     $sub_menu[$obj->id]['parent'] = $obj->parent_id; 
     $sub_menu[$obj->id]['label'] = $obj->label; 
     $sub_menu[$obj->id]['link'] = $obj->link_url; 
     $parent_menu[$obj->parent_id]['count']++; 
    } 
} 
mysql_free_result($items); 


Write The Function 


function dyn_menu($parent_array, $sub_array, $qs_val = "menu", $main_id = "nav", $sub_id = "subnav", $extra_style = "foldout") { 
    $menu = "<ul id=\"".$main_id."\">\n"; 
    foreach ($parent_array as $pkey => $pval) { 
     if (!empty($pval['count'])) { 
      $menu .= " <li><a class=\"".$extra_style."\" href=\"".$pval['link']."?".$qs_val."=".$pkey."\">".$pval['label']."</a></li>\n"; 
     } else { 
      $menu .= " <li><a href=\"".$pval['link']."\">".$pval['label']."</a></li>\n"; 
     } 
     if (!empty($_REQUEST[$qs_val])) { 
      $menu .= "<ul id=\"".$sub_id."\">\n"; 
      foreach ($sub_array as $sval) { 
       if ($pkey == $_REQUEST[$qs_val] && $pkey == $sval['parent']) { 
        $menu .= "<li><a href=\"".rebuild_link($sval['link'], $qs_val, $sval['parent'])."\">".$sval['label']."</a></li>\n"; 
       } 
      } 
      $menu .= "</ul>\n"; 
     } 
    } 
    $menu .= "</ul>\n"; 
    return $menu; 
} 

Thats it have fun

Questions connexes