【发布时间】:2019-09-06 16:32:55
【问题描述】:
我正在菜单中显示类别。有些类别有子类别。
获取父类的函数
function get_parent_category(){
$query="select * from blog_categories where parent_id=0
ORDER BY
CASE id
WHEN '2' THEN 1
WHEN '1' THEN 2
WHEN '3' THEN 3
ELSE id
END";
$rows=array();
$result=$this->query($query);
while($row=$this->fetch_array($result)){
$row['url']=$this->get_cat_url($row);
$rows[]=$row;
}
return $rows;
}
子类别的功能
function get_child_category(){
$query="select * from blog_categories where parent_id!=0";
$rows=array();
$result=$this->query($query);
while($row=$this->fetch_array($result)){
$row['url']=$this->get_cat_url($row);
$rows[]=$row;
}
return $rows;
}
在页面上显示如下:
<ul class="nav navbar-nav">
<li><a href="<?php echo BASE_URL ?>">Home</a></li>
<?php
foreach($this->parent_category as $cat){
foreach($this->child_category as $child_cat){
if($cat['id']==$child_cat['parent_id']){
?>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"><?php echo $cat['name'];?>
<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#"><?php echo $child_cat['name']?></a></li>
</ul>
</li>
<?php
}elseif($cat['parent_id']==0){
?>
<li><a href="<?php echo $cat['url']?>"><span><?php echo $cat['name'];?></span></a></li>
<?php
}
?>
<?php }}?>
输出和问题
红色的主要类别圆圈是seerah,它有两个子类别。在下拉一个子类别中显示两次,第二次显示第二个子类别。
数据库结构
我想要什么:
我想不重复显示每个父类别下的每个子类别,我该如何实现?
【问题讨论】:
-
您是否对 get_child_category() 和 get_parent_category() 中的 $rows 都使用了 var_dum 来查看 sql 结果?
-
@shojaeddin 是的,但它如何解决我的问题?
标签: php loops categories