Php 为什么我能';不要通过取消选中CodeIgniter中的复选框来更改数据库中的数据?
所以我从这个网站上得到了这个简单的论坛项目: 但我无法用checkbox解决这个问题。问题来自网站的原始代码。现在我已经有两天没法解决这个问题了 问题其实很简单,当我想为某个角色(管理员、编辑等)添加权限时,我可以选中一些复选框来实现这一点。如果我想添加特权,它可以正常工作,但是我不能删除我已经添加到角色中的每个特权。代码如下: 控制器Php 为什么我能';不要通过取消选中CodeIgniter中的复选框来更改数据库中的数据?,php,jquery,mysql,codeigniter,checkbox,Php,Jquery,Mysql,Codeigniter,Checkbox,所以我从这个网站上得到了这个简单的论坛项目: 但我无法用checkbox解决这个问题。问题来自网站的原始代码。现在我已经有两天没法解决这个问题了 问题其实很简单,当我想为某个角色(管理员、编辑等)添加权限时,我可以选中一些复选框来实现这一点。如果我想添加特权,它可以正常工作,但是我不能删除我已经添加到角色中的每个特权。代码如下: 控制器 public function role_edit($role_id) { if ($this->session->userdata('
public function role_edit($role_id)
{
if ($this->session->userdata('role_edit') == 0) {
redirect('admin');
}
if ($this->input->post('btn-edit')) {
$this->admin_model->role_edit();
if ($this->admin_model->error_count != 0) {
$this->data['error'] = $this->admin_model->error;
} else {
$this->session->set_userdata('tmp_success', 1);
redirect('admin/role_edit/'.$role_id);
}
}
$tmp_success = $this->session->userdata('tmp_success');
if ($tmp_success != NULL) {
// role updated
$this->session->unset_userdata('tmp_success');
$this->data['tmp_success'] = 1;
}
$this->data['role'] = $this->db->get_where(TBL_ROLES, array('id' => $role_id))->row();
$this->data['title'] = 'Admin Role Edit :: '.CIBB_TITLE;
$this->load->view('header', $this->data);
$this->load->view('admin/sidebar');
$this->load->view('admin/role_edit');
$this->load->view('footer');
}
模型
观点
编辑角色
角色更新!
错误!
-
-
在检查了更新角色的代码之后,我非常确定这是由于以下代码
$row_reset = $row['roles'];
foreach ($row_reset as $key => $value) {
$row_reset[$key] = 0;
}
$this->db->where('id', $row['id']);
$this->db->update(TBL_ROLES, $row_reset);
在这里,“所有角色”子列被重置为零,但问题是,如果您没有选中复选框,它将不会关联行['roles']post字段,因此$row['roles']将是选中复选框的数组,因此它将不会正确更新。去修理它。让我告诉你解决办法
$row_reset = $row['roles'];
用以下数组替换此行
$row_reset = array('admin_area','thread_create','thread_edit','thread_delete','post_create','post_edit','post_delete','role_create','role_edit','role_delete');
可能需要使用$this->db->delete(TBL\u roles,$row\u reset)删除未选择的角色代码>
$row_reset = $row['roles'];
$row_reset = array('admin_area','thread_create','thread_edit','thread_delete','post_create','post_edit','post_delete','role_create','role_edit','role_delete');