doumi7854 2014-03-11 11:00
浏览 81
已采纳

从两个MySQL查询PHP加载菜单和子菜单

                      $menu = mysql_query(" query 1");
                      $k = 1;
                      for ($s = 0; $s < mysql_num_rows($menu); $s++) 
                       {
                          $menus= mysql_fetch_assoc($menu);
                          $mainmenu[]=$menus['name'];

                   $submenus=mysql_query("query 2");
                   for ($m = 0; $m < mysql_num_rows($submenus); $m++) 
                     {
               $submenu = mysql_fetch_assoc($submenus);
                $subitem[]=$submenu['name']; 
                 $url=$submenu['url'];  
                   }
                }    


            foreach($mainmenu  as $mains)
                {
             echo '<li class="hasul"><a><span><b>' .$mains.'</b></span></a></li>';
             foreach($subitem as $sub)
                 {
               echo '<ul>';
               echo '<li><a href="md5($url);=request"><span>' .$sub. '</span></a></li>';
               echo '</ul>';
              }
                } 

The code above show two queries which load a menu and submenus. Query2 uses some inputs from query1. The menus do load correctly but they contain same menu items. Ideally each menu should have its own menu items.

  • 写回答

2条回答 默认 最新

  • douya2433 2014-03-11 11:22
    关注

    You have a foreach inside your foreach, that means, that for every main menu you are outputing all the submenus.

    Create some parameter for submenu, like:

    $mainmenu = array(
            1 => 'about',
            2 => 'news',
            3 => 'search',
        );
    
    $submenu = array(
            1 => array( 'about my name', 'about my location' ),
            3 => array( 'search me' ),
        );
    

    And now check only the submenu you need:

    if ( is_array( $mainmenu ) )
    {
        echo '<ul>';
        foreach( $mainmenu as $key=>$menu )
        {
            echo '<li>'.$menu.'</li>';
            if ( is_array( $submenu[$key]) )
            {
                echo '<ul>';
                foreach( $submenu[$key] as $sub )
                {
                    echo '<li>'.$sub.'</li>';
                }
                echo '</ul>';
            }
        }
        echo '</ul>';
    }
    

    This will produce:

    <ul>
        <li>about</li>
        <ul>
            <li>about my name</li>
            <li>about my location</li>
        </ul>
        <li>news</li>
        <li>search</li>
        <ul>
            <li>search me</li>
        </ul>
    </ul>
    

    I hope you get the idea.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)