您好我正在尝试创建一个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>
有人可以帮我解决一个工作模型的例子,或者帮助我解决我的代码问题。我接近它是错误的,需要朝着正确的方向努力。另一个问题是它显示子菜单是否存在子菜单。
答案 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,你可以使用正确的连接(我不知道你的表模式,所以只需选择所有内容)。