3

我正在努力扩展我的知识,并建立一个迷你论坛。不过,我的代码有问题。

在论坛索引页面上,我想显示所有带有子类别的论坛类别,如下所示:

第一类

  • 子类别 1
  • 子类别 2
  • 子类别 3

第 2 类

  • 子类别 4
  • 子类别 5
  • 子类别 6

如您所见,这有点像正常的“论坛风格”。

但是,当我从数据库中获取结果时,它会返回重复的结果。在这种情况下,复制“论坛类别”。所以它看起来像这样:

第一类

  • 子类别 1

第一类

  • 子类别 2

第一类

  • 子类别 3

... 等等

这是我的模型,它获取所有类别等:categories.php

function GetCategories()
{   
   $this->db->select('*, categories.title as cat_title')->from('categories')->        join('sub_categories', 'sub_categories.categorie_id = categories.id');
    $categories = $this->db->get();
    print_r($categories->result());
    return $categories;
}

和我的论坛控制器:

    function index()
{
    $data['categories'] = $this->categories->GetCategories();
    $this->load->view('forum/index', $data);
}

和视图

<div class="forum-body">
<?php 
foreach($categories->result() as $cate)
{
    echo '<div class="categorie-head">'.$cate->cat_title.'</div>';
    ?>
        <div class="categories-body">
            <?php echo $cate->title;?>
        </div>
        <?php
}
?>

表结构

表“类别”

  • ID
  • 标题

表“子类别”

  • ID
  • 标题
  • 类别 ID

那么,修复它的简单方法是什么?只有一个查询有可能吗?

如果您不明白,请告诉我:)

4

2 回答 2

1

试试这个:

<div class="forum-body">
<?php 
$cat_title = '';
foreach($categories->result() as $cate)
{
   if($cat_title != $cate->cat_title)
    echo '<div class="categorie-head">'.($cat_title = $cate->cat_title).'</div>';
    ?>
        <div class="categories-body">
            <?php echo $cate->title;?>
        </div>
        <?php
}
?>
于 2013-03-09T16:52:40.943 回答
0

您的查询结果很可能显示如下:

Category 1  | sub-category 1
Category 1  | sub-category 2
Category 1  | sub-category 3
Category 2  | sub-category 4
Category 2  | sub-category 5
Category 2  | sub-category 6
...

只知道如何在视图中正确显示它。它可以通过多种方式恢复。例如连接按类别分组的子类别或在 PHP 中使用一些“IF”逻辑:

<div class="forum-body">
<?php
$cat_main = ''; 
foreach($categories->result() as $cate)
{
    $cat_main = ($cat_main == $cate->cat_title) ? '' : $cate->cat_title; 
    if($cat_main != '') '<div class="categorie-head">'.$cate->cat_title.'</div>'; 
?>
        <div class="categories-body">
            <?php echo $cate->title;?>
        </div>
<?php  }  ?>
于 2013-03-09T16:56:17.590 回答