我有一个包含用户订单行的表,我希望用户能够一键更新多个订单行,因此我使用了一个复选框,以便用户可以检查要更新的订单。
每个复选框代表如果要检查则必须更新的订单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>
答案 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