Possible Duplicate:
how to generate an dynamic array
how to generate an dynamic menu which have submenu so on which have store in database and on click show submenu. Please help me i am an fresher php developer.
Possible Duplicate:
how to generate an dynamic array
how to generate an dynamic menu which have submenu so on which have store in database and on click show submenu. Please help me i am an fresher php developer.
Here's a blog article which describes it well: http://crisp.tweakblogs.net/blog/317/formatting-a-multi-level-menu-using-only-one-query.html Then you just use CSS to show/hide submenus.
Ok first create the tables like this
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