Codeigniter:SQL连接导致重复的结果

时间:2013-03-09 16:33:20

标签: php sql codeigniter join

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

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

第1类

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

第2类

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

如你所见,它有点像普通的论坛风格"。

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

第1类

  • 子类别1

第1类

  • 子类别2

第1类

  • 子类别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
}
?>

表格结构

表&#34; catgories&#34;

  • ID
  • 标题

表&#34; sub_categories&#34;

  • ID
  • 标题
  • categorie_id

那么,什么是easiset wa yto修复它?是否可以使用onlly一个查询?

如果您不理解,请告诉我。)

2 个答案:

答案 0 :(得分: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
}
?>

答案 1 :(得分: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  }  ?>