【问题标题】:How do i loop database in view with a specific table column value如何使用特定表列值循环查看数据库
【发布时间】:2019-08-13 21:32:44
【问题描述】:

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 ;?>

【问题讨论】:

  • 恐怕它不确定实际的问题是什么。您能否详细说明what i want is show only one brand and loop it. 的含义?
  • @dev-cyprium 在我的表“1, 2”中有 2 个brand_id,我想要的是循环我的表数据并只显示一个具有 id '1' 或 '2' 的品牌数据。所以,如果我在brand_id = 1的地方循环数据,它只会循环苹果品牌。

标签: php codeigniter


【解决方案1】:

如果您需要一次只显示一个品牌,您可以通过以下几种方式进行:

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

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

【讨论】:

  • 其实我已经解决了这个问题。与您的模型相同,我以相同的方式进行操作。感谢您的答复。我会将您的答案标记为已接受的答案。
猜你喜欢
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 2023-03-31
  • 1970-01-01
  • 2019-03-16
  • 2019-08-24
  • 2011-07-15
相关资源
最近更新 更多