Php 动态嵌套菜单放置不正确<;ul>;标签和<;李>;不环绕子菜单项

Php 动态嵌套菜单放置不正确<;ul>;标签和<;李>;不环绕子菜单项,php,drop-down-menu,Php,Drop Down Menu,我试图创建一个动态嵌套菜单,但遇到了一些我不知道如何处理的问题。在每个顶部菜单项之后,我得到一个空的UL标签集。 此外,当存在下拉菜单时,LI标签集未正确包装UL标签 这是我试图修改的代码…谢谢 $sql = "SELECT menuID, menuTitle, menuURL, menuParentID, menuOrderID FROM menu ORDER BY menuParentID, menuOrderID ASC"; $items = mysql_query($sql); whil

我试图创建一个动态嵌套菜单,但遇到了一些我不知道如何处理的问题。在每个顶部菜单项之后,我得到一个空的UL标签集。 此外,当存在下拉菜单时,LI标签集未正确包装UL标签

这是我试图修改的代码…谢谢

$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."\">\n";
    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>\n";
        } else {
            $menu .= "  <li><a href=\"".$pval['link']."\">".$pval['menuTitle']."</a></li>\n";
        }
        //if (!empty($_REQUEST[$qs_val])) {
        $menu .= "<ul class=\"".$sub_id."\">\n";
        foreach ($sub_array as $sval) {
            if ($pkey == $sval['parent']) { //
                $menu .= "<li><a href=\"".$sval['link']."\">".$sval['menuTitle']."</a></li>\n";
            }
        }
        $menu .= "</ul>\n";
        //}
    }
    $menu .= "</ul>\n";
    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>
$sql=“通过menuParentID、menuOrderID ASC从菜单顺序中选择menuID、menutile、menuURL、menuParentID、menuOrderID”;
$items=mysql\u查询($sql);
while($obj=mysql\u fetch\u object($items)){
如果($obj->menuParentID==0){
$parent_菜单[$obj->menuID]['menuTitle']=$obj->menuTitle;
$parent_菜单[$obj->menuID]['link']=$obj->menuURL;
}否则{
$sub_菜单[$obj->menuID]['parent']=$obj->menuParentID;
$sub_菜单[$obj->menuID]['menutile']=$obj->menutile;
$sub_菜单[$obj->menuID]['link']=$obj->menuURL;
如果(!isset($parent_menu[$obj->menuParentID]['count'])){
$parent_菜单[$obj->menuParentID]['count']=0;
}
$parent_菜单[$obj->menuParentID]['count']++;
}
}
mysql_免费_结果($items);
函数dyn_menu_折叠($parent_array、$sub_array、$qs_val=“menu”、$main_id=“nav”、$sub_id=“dropdown menu”、$dd_style=“dropdown”){
$menu=“
    \n”; foreach($pkey=>$pval的父数组){ 如果(!empty($pval['count'])){ $menu.=“
  • \n”; }否则{ $menu.=“
  • \n”; } //如果(!empty($\u请求[$qs\u val])){ $menu.=“
      \n”; foreach($sval作为子数组){ 如果($pkey==$sval['parent']){// $menu.=“
    • \n”; } } $menu.=“
    \n”; //} } $menu.=“
\n”; 返回$menu; } ?> //这是结果的一个样本。
    • //不正确的ul标签
          • //li标签未环绕UL标签
                  //应该是这样的。

                  在不确定$parent\u菜单和$sub\u菜单是如何构造的情况下,我无法确定这是否能完成任务,但还是要试一试

                  function create_menu($parent_array, $sub_array, $qs_val = "menu", $main_id = "nav", $sub_id = "dropdown-menu", $dd_style = "dropdown")
                  {
                      $menu = "<ul class=\"{$main_id}\">\n";
                  
                      foreach ($parent_array as $pkey => $pval) {
                          if ( ! empty($pval['count'])) {
                              $menu .= "\t<li class=\"{$dd_style}\"><a href=\"{$pval['link']}\">{$pval['menuTitle']}<b class=\"caret\"></b></a>\n";
                              $menu .= "\t\t<ul class=\"{$sub_id}\">\n";
                  
                              foreach ($sub_array as $sval) {
                                  if ($pkey == $sval['parent']) {
                                      $menu .= "\t\t\t<li><a href=\"{$sval['link']}\">{$sval['menuTitle']}</a></li>\n";
                                  }
                              }
                  
                              $menu .= "</ul></li>\n";
                          } else {
                              $menu .= "\t<li><a href=\"{$pval['link']}\">{$pval['menuTitle']}</a></li>\n";
                          }
                      }
                  
                      return $menu . "</ul>\n";
                  }
                  
                  函数创建菜单($parent\u array、$sub\u array、$qs\u val=“menu”、$main\u id=“nav”、$sub\u id=“dropdown menu”、$dd\u style=“dropdown”)
                  {
                  $menu=“
                    \n”; foreach($pkey=>$pval的父数组){ 如果(!empty($pval['count'])){ $menu.=“\t
                  • \n”; $menu.=“\t\t
                      \n”; foreach($sval作为子数组){ 如果($pkey==$sval['parent'])){ $menu.=“\t\t\t
                    • \n”; } } $menu.=“
                  • \n”; }否则{ $menu.=“\t
                  • \n”; } } 返回$menu。“
                  \n”; }

                  如果您仍然有问题,请发布$parent_menu和$sub_menu的var_dump()输出。

                  这完全是开箱即用。。非常感谢你!我为此挣扎了很长一段时间没问题。很高兴我能帮忙。