如何在具有特定表列值的视图中循环数据库

时间:2019-03-22 20:30:59

标签: php codeigniter

tb_stock:

+------------+--------------+-------------+------------+
| id_stock   | name_stock   |  brand_id   |  price     |
+------------------------------------------------------+
| 1          | iPhone XS    |      1      |  1299      |
| 2          | galaxy s10   |      2      |  1000      |
| 3          | galaxy s10+  |      2      |  1100      |
| 4          | IWatch       |      1      |  500       |
+------------------------------------------------------+

从上表中,我想在复选框循环中仅显示一个品牌。  我已经使用foreach来获取价值。但是我在复选框中输入了所有品牌。 我想要的是只显示一个品牌并循环播放。

控制器:

public function index(){
$data['getStok'] = $this->M_input->getStok();
this->page->view('product', $data);

}

型号:

public function getStok(){
  $query = $this->db->get('tb_stok');
   return $query->result();
}

视图:

<?php if(count($getStok)):?>
   <?php foreach ($getStok as $a):?>
    <div class="form-group">
       <div class="col-sm-12">
         <input type="checkbox" class="minimal" 
                id="<?php echo $a->name_stok;?>" 
                value=<?php echo $a->price;?>>

       <label><?php echo $a->name_stok;?></label>
            </div>
        </div>
      <?php endforeach;?>
    <?php else :?>
  <?php endif ;?>

1 个答案:

答案 0 :(得分:0)

如果您一次只需要展示一个品牌,则可以采用以下几种方法:

  1. 在视图for循环中仅过滤一个品牌。这不是最佳方法,因为您将业务逻辑移到了MVC的View级别。
  2. 在模型中过滤单个品牌。这是一种更好的方法,因为模型被认为是业务逻辑的适当位置。

Here,您可以在MVC中找到有关业务逻辑的更多说明

只需对模型(和控制器)进行一些更改即可实现第二种方法

控制器:

public function index() 
{
    // assuming you get the brand ID to display from GET request 
    $brandId = $this->input->get('brand_id');
    $data['getStok'] = $this->M_input->getStokByBrandId($brandId);
    this->page->view('product', $data);
}

型号:

public function getStokByBrandId($brandId)
{
    $query = $this->db->where('brand_id', $brandId)->get('tb_stok');
    return $query->result();
}

视图:

no changes needed