如何使用codeigniter

时间:2015-07-27 06:34:25

标签: php mysql codeigniter

我有一个包含两个名为类别和产品的表的数据库。我想按类别展示产品。

Category 1
         -Product 1
         -Product 2 
Category 2
         -Product 1
         -Product 2

但是,我的代码会返回每个产品的类别名称。像

Category 1
         -Product 1
Category 1
         -Product 2
Category 2
         -Product 1
Category 2
         -Product 2

这是我的代码尝试:

模型

function NestedProducts()
{
    $sql = "Select C.c_name, P.productname 
        From categories C left join products P on C.id = P.category_id 
        Order by C.c_name";
        $query = $this->db->query($sql);

        return $query->result_array();
}

控制器

public function index()
{
    $data['productsbycategory'] = $this->Model->NestedProducts();
    $this->load->view('home', $data);
}

查看

<?php foreach($productsbycategory as $row) : ?>
   <div>
      <h4><?php echo $row['c_name']; ?></h4>
          <div>
          <h6><?php echo anchor('method/'.$id, $row['productname']); ?></h6>        
         </div>
   </div>
<?php endforeach; ?>

3 个答案:

答案 0 :(得分:1)

只需使用group_concatgroup by子句更新您的查询,您就会得到以逗号分隔的值,您可以在comma上轻松爆炸

$sql = "Select C.c_name, group_concat(P.productname) as productname 
        From categories C left join products P on C.id = P.category_id 
        group by C.c_name
        Order by C.c_name";

注意:未经测试

答案 1 :(得分:0)

您需要创建子类别的产品,并将类别作为各自的密钥。

function NestedProducts() {
    $sql = "Select C.c_name, P.productname 
        From categories C left join products P on C.id = P.category_id 
        Order by C.c_name";
        $query = $this->db->query($sql);
        $products = array();
        if ($query->num_rows()) {
          foreach ($query->result_array() as $row) {
            $products[$row['c_name']][] = $row;
          }
        }
        return $query->result_array();
}

并且在视野中:

<?php foreach($productsbycategory as $categoryName => $row) : ?>
   <div>
      <h4><?php echo $categoryName;?></h4>
      <?php foreach($row as $product) : ?>
          <div><h6><?php echo anchor('method/'.$row['id'], $row['productname']); ?></h6></div>
      <?php endforeach; ?>
   </div>
<?php endforeach; ?>

答案 2 :(得分:0)

模型应该是:

<强>模型

function NestedProducts()   
{     
  $sql = "SELECT C.c_name, P.productname    
FROM categories C    
LEFT JOIN products P on C.id = P.category_id    
ORDER BY C.id";     

$query = $this->db->query($sql);    

return $query->result_array();    
}