2010-01-17 84 views
0

可能重复:
how to generate an dynamic array动态菜单生成在PHP

如何生成具有子等在其数据库和点击子菜单显示有商店的动态菜单。请帮助我,我是一名新鲜的PHP开发人员。

+0

重复的问题由同一个用户问http://stackoverflow.com/questions/2081324/dynamic-menu-generation- in-php – Joe 2010-01-17 14:37:58

+2

@Joe你喝醉了吗? – streetparade 2010-01-17 14:39:43

+0

@Joe:错误的链接,重复的问题ID是2081108 – 2010-01-17 14:40:12

回答

1

可以先创建一个这样

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; 
} 

那表是有乐趣