我正在尝试根据数据库中表格的结果来管理动态菜单。
以下代码到目前为止我已经来了..但我无法按照我想要的那样显示它。
我的数据库中有3个表就像这样。
ws_categories
ws_subcategories
ws_subsubs
我想达到什么目标? 有一个简单的垂直菜单,输出主要类别,以及onclick,与该主要类别相关的子菜单选项将显示,如果子类别有第3个子菜单/子菜单,它们将显示在...
下面的代码是到目前为止我来了..但我似乎不明白为什么它输出主类别几次而不只是一次..
要清楚,我不明白我应该如何使用join来实现这一目标。我希望能够一次回显所有主要类别,并且子类别一次,如果有一个或多个第二子类别,我希望它们也能回应...如何通过加入实现此目的?是甚至可能还是我看错了?
提前致谢。
<?php
echo '<div class="dl_parent">';
$results = mysqli_query($link, "SELECT * FROM `ws_categories` INNER JOIN `ws_subcategories` ON `ws_categories`.`id` = `ws_subcategories`.`parentcat`;") or die (mysqli_error($link));
while($row = mysqli_fetch_array($results)){
echo '
<div class="dl_parent">
<div class="dl_link">'.$row['maincat'].'</div>
<div class="dl_sub_dd">
<ul>
<li>'.$row['subcat'].'</li>
</ul>
</div>
</div>
';
}
?>
$(window).on('load',function(){
//CLICK-HANDLERS=============================
$('.dl_link').click(function(){
var submenu = $(this).parent().children('.dl_sub_dd');
if (submenu.css('display') == 'none') {
$('.dl_sub_dd').hide(); //first hide any previously showing submenu's
submenu.show(); //then show the current submenu
} else {
submenu.hide(); //hide the current submenu again
}
});
});
/*LINK------------------------*/
.dl_link {
cursor:pointer;
}
/*DROPMENU--------------------*/
.dl_sub_dd {
display:none;
}
答案 0 :(得分:1)
您的SQL请求会为每个主要类别提供 ,因为它具有子类别的行数
row 1: maincat1 | subcat1
row 2: maincat1 | subcat2
etc...
您可以请求选择所有maincats,并为每个maincat发出另一个请求以选择其所有子类。像这样:
<?php
$results = mysqli_query($link, "SELECT * FROM `ws_categories`;") or die (mysqli_error($link));
while($row = mysqli_fetch_array($results)){
echo '
<div class="dl_parent">
<div class="dl_link">'.$row['maincat'].'</div>
<div class="dl_sub_dd">
<ul>';
$query = mysqli_query($link, "SELECT * FROM `ws_categories` INNER JOIN `ws_subcategories` ON `ws_categories`.`id` = `ws_subcategories`.`parentcat` WHERE `ws_categories`.`id` = " . $row['id'] . ";") or die (mysqli_error($link));
while($row2 = mysqli_fetch_array($query)) {
echo '<li>'.$row2['subcat'].'</li>';
}
echo '</ul>
</div>
</div>
';
}
?>