-1

嗨,我正在尝试创建一个 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>

有人可以帮我举一个工作模型的例子,或者帮我写代码。我接近它是错误的,需要朝着正确的方向推动。另一个问题是它显示子菜单ul是否有子菜单。

4

1 回答 1

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>

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

于 2013-04-22T13:28:20.130 回答