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

时间:2014-03-11 11:00:13

标签: php mysql

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

上面的代码显示了两个加载菜单和子菜单的查询。 Query2使用来自query1的一些输入。 菜单确实正确加载,但它们包含相同的菜单项。理想情况下,每个菜单都应该有自己的菜单项。

2 个答案:

答案 0 :(得分:1)

foreach中有一个foreach,这意味着,对于每个主菜单,您输出所有子菜单。

submenu创建一些参数,例如:

$mainmenu = array(
        1 => 'about',
        2 => 'news',
        3 => 'search',
    );

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

现在只检查您需要的submenu

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

这将产生:

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

我希望你明白这一点。

答案 1 :(得分:1)

使用此..这可能更容易理解..

echo '<ul>';
$qry = mysql_query("query 1");
while ($row = mysql_fetch_array($qry))
{
    echo "<li>";
    echo "<a href='" . $row['url'] . "'>'" . $row['name'] . "'</a>";
    $qry2 = mysql_query("query 2");
    if (mysql_num_rows($query2) > 0)
    {
        echo "<ul>";
        while ($row2 = mysql_fetch_array($query2))
        {
            echo "<li>";
            echo "<a href='" . $row2['url2'] . "'>'" . $row2['name2'] . "'</a>";
            echo "</li>";
        }
        echo "</ul>";
    }
    echo "</li>";
}
echo "</ul>";

如果您需要任何进一步的帮助,请告诉我......