Jquery, CSS三层菜单,MYSQL, PHP填充


Jquery, CSS three tiered menu populated by MYSQL, PHP

嗨,我正在尝试创建一个3层菜单系统,只是一个标准;

<ul>
    <li></li>
    <li>
        <ul>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </li>
    <li></li>
</ul>

类型系统。我有三个表;

menu1 -名称,链接,类型,位置,顺序,状态菜单-父级、名称、链接、类型、位置、顺序、状态菜单3 -父项、名称、链接、类型、位置、顺序、状态

当选择第一级菜单项时,我可以通过在循环中放入查询来使其工作,但这实际上是对每个菜单项运行查询(在大型菜单系统上这不是一个解决方案)

我想出了这个(不工作的)模型(只显示顶层)。

    <ul class="dropdown">
    <?php
    include('../../config/mysqli_connect.php');
    $q = "SELECT * FROM menu1 WHERE position = 'top' AND status ='yes'";
    $q2 = "SELECT * FROM menu2 WHERE position = 'top' AND status ='yes'";
    $q3 = "SELECT * FROM menu3 WHERE position = 'top' AND status ='yes'";
    $r = mysqli_query($dbc, $q);
    $r2 = mysqli_query($dbc, $q2);
    $r3 = mysqli_query($dbc, $q3);
        while($menu1 = mysqli_fetch_array($r, MYSQL_ASSOC))
        {
            echo "<li><a href='" . $menu1['link'] . "'>" . $menu1['name'] . "</a></li>";
            while($menu2 = mysqli_fetch_array($r2, MYSQL_ASSOC))
            {
                echo "<ul class='sub_menu'>";
                if($menu2['parent'] == $menu1['name'])
                {
                    echo "<li><a href='" . $menu2['link'] . "'>" . $menu2['name'] . "</a></li>";
                }
                echo "</ul>";
            }
        }
    ?>
    </ul>

有人可以帮助我一个工作模型的例子或帮助我与我的代码。我走错了路,需要有人把我推到正确的方向。另一个问题是,它显示子菜单ul是否有子菜单。

 <ul class="dropdown">
    <?php
    include('../../config/mysqli_connect.php');
    $q = "SELECT 
        tb1.link as 'menu1_link',
        tb2.link as 'menu2_link',
        tb3.link as 'menu3_link',
        tb1.name as 'menu1_name',
        tb2.name as 'menu2_name',
        tb3.name as 'menu3_name',
        tb2.parent as 'menu2_parent'
        FROM 
        menu1 as tb1,
        menu2 as tb2,
        menu2 as tb3,
        WHERE
        (tb1.position = 'top' AND tb1.status ='yes')
        AND (tb2.position = 'top' AND tb2.status ='yes')
        AND (tb3.position = 'top' AND tb3.status ='yes');";
    $r = mysqli_query($dbc, $q);
        while($row = mysqli_fetch_array($r, MYSQL_ASSOC))
        {
                ?>
            <li><a href="<?=$row['menu1_link'];?>"><?=$row['menu1_name'];?></a></li>
            <ul class='sub_menu'>";
                <?php
                if($row['menu2_parent'] == $row['menu1_name'])
                {
                ?>
                   <li><a href="<?=$row['menu2_link'];?>"><?=$row['menu2_name'];?></a></li>
                <?php   
                }
                echo "</ul>";
            }
   ?>
    </ul>

这样行吗?也许如果表应该被join,您可以使用适当的join(我不知道您的表模式,所以只需选择所有内容)。