我正在尝试根据数据库中表的结果来管理动态菜单。
到目前为止,下面的代码已经来了。。但是我无法按照我的意愿显示它。
我的数据库中有3个表,看起来像这样。
ws_categories
ws_subcategories
ws_subsubs
我想实现什么?具有一个简单的垂直菜单,可以输出主要类别,并在onclick上显示与该主要类别相关的子菜单替代项,如果子类别具有第3个子菜单/子菜单,则将显示在下面。
到目前为止,下面的代码已经来了。但是我似乎不明白为什么它多次输出主类别,而不仅仅是一次。
需要明确的是,我不明白我应该如何使用join来实现这一目标。我希望能够一次回显所有主要类别,一次回显子类别,并且如果有一个或多个第二子类别,我也希望它们也回响。如何通过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;
}
您的SQL请求将为您的每个主要类别提供与子类别一样多的行:
row 1: maincat1 | subcat1
row 2: maincat1 | subcat2
etc...
您可以请求选择所有主要猫,对于每个主要猫,都可以再次请求选择其所有子猫。像这样的东西:
<?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>
';
}
?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句