0

我有一个带有类别的侧边栏。当我单击一个类别时,它会向我显示位于该类别中的工厂。

我使用codeigniter中的连接来做到这一点。

现在我想显示一个类别中有多少工厂。例如:

Categories.

Cars (2)
Books (7)
Animals (45)

所以很简单,必须显示有多少工厂拥有该特定类别。

我试图做一个简单的 count_all_results 但后来我得到了工厂的总数。但我希望他们按类别的特定 id 计数。

我的模型功能:

function categorieen_getall($segment3)
{
    $this->db->where('categorieen.idcategorieen', $segment3);
    $this->db->select('*');
    $this->db->from('bedrijfcategorieen');
    $this->db->join('categorieen', 'categorieen.idcategorieen = bedrijfcategorieen.idcategorieen');
    $this->db->join('bedrijven', 'bedrijven.idbedrijven = bedrijfcategorieen.idbedrijven');
    $query = $this->db->get();
    $result = $query->result();
    /*
    echo '<pre>';
    print_r($result);
    */
    return $result;
}

我的控制器功能:

    function get_All()
    {
        $data['cat'] = $this->categorieen_model->categorieen_getall($segment3);
        $this->load->view('views/sidebar', $data);
    }

我的观点:

    <div id="sidebar">
    <?php
    echo '<h3>Categorieën</h3>';
    echo ($this->db->count_all_results('categorieen')); 

    ?>

        <hr>
        <br/>
        <?php
        echo '<ul>';
        if(isset($cat) && is_array($cat)){
            foreach($links as $k => $value){

                echo '<li>';
                echo '<br>';
                echo '<a href="'.base_url().'home/categorie/'.$value->idcategorieen.' ">' .$value->Categorie. '</a>';
                echo '</li>';

            }
        }
        echo '<ul>';
        /*
        if(isset($cat ) && is_array($cat )){
            foreach($cat as $key => $row){
                echo "Categorie:"; echo $row->Categorie;
                echo "<br />";
                echo $row->idcategorieen;
                echo "<br />";
                echo $row->Bedrijfsnaam;
            }
        }
        */
        ?>
</div>

我的数据库方案:

Factories
--------
idfactories
factoryname
adress
email
...

Categories
----------
idcategories
Category


Factorycategories
-----------------
idfactorycategories
idcategories
idfactories
4

2 回答 2

0

这不太合适,因为我知道有更好的方法可以做到这一点,但这将为您完成工作:

// Get categories
$categories = array();

$query = $this->db->query("select * from `Categories` order by `idcategories`");

if($query->num_rows() > 0)
{
  foreach($query->result_array() as $row)
  {
    $query_count = $this->db->query("select `idfactorycategories` from `Factorycategories` where `idcategories` = {$row['idcategories']}");
    $factory_count = $query_count->num_rows();

    $categories[] = array(
      'count' => $factory_count 
    );
  }
}

为方便起见,您可以先在foreach循环中获取类别,然后为每个类别提交factories表查询,以获取具有相关类别 ID 的工厂的相关计数。

于 2013-04-02T09:38:03.153 回答
0

我又问了一个问题。有同样的问题,我解决了。

用我得到的解决方案看看我自己的答案!

计算联接表中的结果并在侧边栏中的 () 之间显示

感谢帮助我的人:)

于 2013-05-01T10:07:23.793 回答