Codeigniter-根据选定的复选框更新数据库记录

时间:2018-06-23 18:52:17

标签: php database codeigniter loops codeigniter-3

我有一个包含用户订单行的表,我希望用户能够一键更新多个订单行,因此我使用了一个复选框,以便用户可以检查要更新的订单。

每个复选框代表如果要检查则必须更新的订单ID,我尝试使用循环,但是代码否则会导致错误,或者什么也不做。

这是我的模型代码:

public function update_order(){
    $data = array(
      'status' => 'Pack'
    );
    $this->db->where('order_id', $this->input->post('checkbox'));
    return $this->db->update('user_orders', $data);
  }

控制器代码(为了使代码更加清晰,我放置了没有任何循环的代码):

public function update_order()
{
   $this->user_model->update_order();
}

最后是视图:

<?php echo form_open('user/update_order'); ?>
    <?php foreach ($users as $user): ?>
    <input type="checkbox" class="custom-control-input" name="checkbox" value="<?php echo $user['order_id']; ?>">
      <?php endforeach; ?>
      <button type="submit" class="btn btn-sm btn-block btn-warning text-white">Update</button>
 </form>

1 个答案:

答案 0 :(得分:2)

希望这对您有帮助:

将您的复选框设置为以下数组:checkbox[]

您的视图应如下所示:

<?php echo form_open('user/update_order'); ?>
    <?php foreach ($users as $user): ?>
    <input type="checkbox" class="custom-control-input" name="checkbox[]" value="<?php echo $user['order_id']; ?>">
      <?php endforeach; ?>
      <button type="submit" class="btn btn-sm btn-block btn-warning text-white">Update</button>
 <?php echo form_close(); ?>

您的update_order方法应如下所示:

使用where_in更新记录

public function update_order()
{
    $data = array(
      'status' => 'Pack'
    );
    $order_ids = $this->input->post('checkbox');
    $this->db->where_in('order_id', $order_ids);
    return $this->db->update('user_orders', $data);
}

查看更多:https://www.codeigniter.com/user_guide/database/query_builder.html#looking-for-specific-data