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

时间:2013-04-22 13:15:59

标签: php jquery mysql css drop-down-menu

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

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

</ul>

类型系统。我有三张桌子;

menu1 - 名称,链接,类型,位置,顺序,状态 menu2 - 父级,名称,链接,类型,位置,顺序,状态 menu3 - 父级,姓名,链接,类型,职位,顺序,状态

我可以通过在选择第一级菜单项时在循环中放置一个查询来实现它,但实质上是在每个菜单项上运行查询(在大型菜单系统上这不是解决方案)

我想出了这个(非工作)模型(仅显示顶层)。

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

有人可以帮我解决一个工作模型的例子,或者帮助我解决我的代码问题。我接近它是错误的,需要朝着正确的方向努力。另一个问题是它显示子菜单是否存在子菜单。

1 个答案:

答案 0 :(得分:0)

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

这样怎么样?也许如果表格应该是JOINED,你可以使用正确的连接(我不知道你的表模式,所以只需选择所有内容)。