我正在菜单中显示类别。有些类别有子类别。
获取父类别的功能
dat %>% complete(nesting(x,output),y)
子类别的功能
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;
}
输出和问题
红色的主要类别圈子为 seerah ,其中有两个子类别。在下拉的一个子类别中的第一个显示两次,第二次显示第二个子类别。
数据库结构
我想要的是
我想不重复显示每个父类别下的每个子类别,我该如何实现?
答案 0 :(得分:0)
在我看来,您似乎没有分割HTML并在此处正确循环:
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>
通常,每当您有一个循环时,在任何嵌套循环开始之前都应该有一些输出。在您的情况下,第一级循环涉及类别,类别应成为父主菜单<li>
的{{1}}。
我想。您需要将此片段转换为:
<ul>
答案 1 :(得分:0)
当您在$行中没有重复值时,为什么还要对$ cat ['name']使用此部分?
elseif($cat['parent_id']==0){
?>
<li><a href="<?php echo $cat['url']?>"><span><?php echo $cat['name'];?></span></a></li>
<?php
}
在foreach的第一部分中创建
<a class="dropdown-toggle" data-toggle="dropdown" href="#"><?php echo $cat['name'];?>
答案 2 :(得分:0)
这是我处理问题的方式
<?php
foreach($this->parent_category as $cat){
$html = '';
foreach($this->child_category as $child_cat){
if($cat['id']==$child_cat['parent_id']){
$html .= '<li><a href="'.$child_cat['url'].'">' . $child_cat['name'] . '</a></li>';
// here is all child categories are saved in var.
}
}
if ($html == '') {
?>
<li><a href="<?php echo $cat['url']?>"><span><?php echo $cat['name'];?></span></a></li>
<?php
} else {
?>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"><?php echo $cat['name'];?>
<span class="caret"></span></a>
<ul class="dropdown-menu">
<?php echo $html; ?> // here is displayed under parent category
</ul>
</li>
<?php
}
}
?>
输出