I'm trying to create a dynamic nested menu and am running into some issues that I don't know how to handle. After each top menu item I am getting a empty UL tag set. Also when there is a drop down menu the LI tag set is not properly wrapping the UL tags.
here is the code I am trying to modify....thanks!
$sql = "SELECT menuID, menuTitle, menuURL, menuParentID, menuOrderID FROM menu ORDER BY menuParentID, menuOrderID ASC";
$items = mysql_query($sql);
while ($obj = mysql_fetch_object($items)) {
if ($obj->menuParentID == 0) {
$parent_menu[$obj->menuID]['menuTitle'] = $obj->menuTitle;
$parent_menu[$obj->menuID]['link'] = $obj->menuURL;
} else {
$sub_menu[$obj->menuID]['parent'] = $obj->menuParentID;
$sub_menu[$obj->menuID]['menuTitle'] = $obj->menuTitle;
$sub_menu[$obj->menuID]['link'] = $obj->menuURL;
if (!isset($parent_menu[$obj->menuParentID]['count'])) {
$parent_menu[$obj->menuParentID]['count'] = 0;
}
$parent_menu[$obj->menuParentID]['count']++;
}
}
mysql_free_result($items);
function dyn_menu_folded($parent_array, $sub_array, $qs_val = "menu", $main_id = "nav", $sub_id = "dropdown-menu", $dd_style = "dropdown") {
$menu = "<ul class=\"".$main_id."\">
";
foreach ($parent_array as $pkey => $pval) {
if (!empty($pval['count'])) {
$menu .= " <li class=\"".$dd_style."\"><a href=\"".$pval['link']./*"?".$qs_val."=".$pkey.*/"\">".$pval['menuTitle']."<b class=\"caret\"></b></a></li>
";
} else {
$menu .= " <li><a href=\"".$pval['link']."\">".$pval['menuTitle']."</a></li>
";
}
//if (!empty($_REQUEST[$qs_val])) {
$menu .= "<ul class=\"".$sub_id."\">
";
foreach ($sub_array as $sval) {
if ($pkey == $sval['parent']) { //
$menu .= "<li><a href=\"".$sval['link']."\">".$sval['menuTitle']."</a></li>
";
}
}
$menu .= "</ul>
";
//}
}
$menu .= "</ul>
";
return $menu;
}
?>
<?php
echo dyn_menu_folded($parent_menu, $sub_menu, "menu", "nav", "dropdown-menu");
?>
//this is a sample of the result.
<ul class="nav">
<li ><a href="#">ITEM A</a></li>
<ul class="dropdown-menu"></ul> //IMPROPER UL TAGS
<li ><a href="#">ITEM B</a></li>
<ul class="dropdown-menu"></ul>
<li ><a href="#">ITEM C</a></li>
<ul class="dropdown-menu"></ul>
<li ><a href="#">ITEM D</a></li>
<ul class="dropdown-menu"></ul>
<li class="dropdown"><a href="#">ITEM E<b class="caret"></b></a>
</li> //LI TAG NOT WRAPPING AROUND UL TAG
<ul class="dropdown-menu">
<li ><a href="#">ITEM E1</a></li>
<li ><a href="#">ITEM E2</a></li>
<li ><a href="#">ITEM E3</a></li>
<li ><a href="#">ITEM E4</a></li>
<li ><a href="#">ITEM E5</a></li>
</ul>
<li class="dropdown"><a href="#">ITEM F<b class="caret"></b></a>
</li>
<ul class="dropdown-menu">
<li ><a href="#">ITEM F1</a></li>
<li ><a href="#">ITEM F2</a></li>
<li ><a href="#">ITEM F3</a></li>
<li ><a href="#">ITEM F4</a></li>
<li ><a href="#">ITEM F5</a></li>
<li ><a href="#">ITEM F6</a></li>
</ul>
<li ><a href="#">ITEM G</a></li>
<ul class="dropdown-menu"></ul>
<li ><a href="#">ITEM H</a></li>
<ul class="dropdown-menu"></ul>
<li ><a href="#">ITEM I</a></li>
<ul class="dropdown-menu"></ul>
<li ><a href="#">ITEM J</a></li>
<ul class="dropdown-menu"></ul>
</ul>
//This is how it should look.
<ul class="nav">
<li ><a href="#">ITEM A</a></li>
<li ><a href="#">ITEM B</a></li>
<li ><a href="#">ITEM C</a></li>
<li ><a href="#">ITEM D</a></li>
<li class="dropdown"><a href="#">ITEM E<b class="caret"></b></a>
<ul class="dropdown-menu">
<li ><a href="#">ITEM E1</a></li>
<li ><a href="#">ITEM E2</a></li>
<li ><a href="#">ITEM E3</a></li>
<li ><a href="#">ITEM E4</a></li>
<li ><a href="#">ITEM E5</a></li>
</ul>
</li>
<li class="dropdown"><a href="#">ITEM F<b class="caret"></b></a>
<ul class="dropdown-menu">
<li ><a href="#">ITEM F1</a></li>
<li ><a href="#">ITEM F2</a></li>
<li ><a href="#">ITEM F3</a></li>
<li ><a href="#">ITEM F4</a></li>
<li ><a href="#">ITEM F5</a></li>
<li ><a href="#">ITEM F6</a></li>
</ul>
</li>
<li ><a href="#">ITEM G</a></li>
<li ><a href="#">ITEM H</a></li>
<li ><a href="#">ITEM I</a></li>
<li ><a href="#">ITEM J</a></li>
</ul>