php - Codeigniter - 根据选中的复选框更新数据库记录
问题描述
我有一个包含用户订单行的表,我希望用户能够一键更新多个订单行,所以我使用了一个复选框,以便用户可以检查想要更新的订单。
每个复选框表示如果选中则必须更新的订单 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>
解决方案
希望对你有帮助 :
使您的复选框成为这样的数组: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
推荐阅读
- java - 通过 Selenium 启动外部 VPN 软件
- json - 有没有办法将“environment.ts”文件导入 json?
- angular - 如何以角度强制关闭 ngx-contextmenu?
- javascript - 如何更改 Vuetify 数据表中的标签“排序依据”?
- angular - 如何在 Visual Studio 的 dotnet core 角度模板中添加对角度单元测试的支持
- plot - 呈现高度精细和“缩小”的数据
- spring-boot - 状态动作和进入动作之间有什么区别以及状态动作的 Papyrus 对应物是什么
- python - 如何计算分组和聚合数据的平均值?
- json - ConvertFrom-Json 返回“无法处理参数,因为参数“名称”的值无效。”
- java - Firebase查询名称是否与使用java登录时的密码匹配