使用codeigniter在db中插入多个复选框值

时间:2016-04-13 10:36:14

标签: php mysql codeigniter

我正在使用codeigniter框架和为不同类型的用户设置权限的Web应用程序,因此我需要在db中为每个用户添加大约35行,每行有6个复选框值(0,1)。将这些值存储在数组中并发送到MODEL进行插入时,我遇到了困难。

这是控制器代码:

public function set_priv(){

    $data = array(
        array(

            'type_id' => $this->input->post('priv_type_id'),
            'module_name' => 'Classes',
            'can_access' => $this->input->post('classes[0]'),
            'can_insert' => $this->input->post('classes[1]'),
            'can_delete' => $this->input->post('classes[2]'),
            'can_update' => $this->input->post('classes[3]'),
            'can_export' => $this->input->post('classes[4]'),
            'can_print' => $this->input->post('classes[5]'),

            ),
        //  ),
    );

}

用于理解的HTML表单代码 每个复选框用于访问,插入,更新和删除权限等。

<div class="col-md-1">
   <input type="checkbox" name="classes[]" />
</div>
<div class="col-md-1">
    <input type="checkbox" name="classes[]" />
</div>
<div class="col-md-1">
    <input type="checkbox" name="classes[]" />
</div>
<div class="col-md-1">
    <input type="checkbox" name="classes[]" />
</div>
<div class="col-md-1">
    <input type="checkbox" name="classes[]" />
</div>
<div class="col-md-1">
    <input type="checkbox" name="classes[]"/>
</div>

3 个答案:

答案 0 :(得分:0)

为什么使用多维数组插入数据? 如果您正在获取数组中的复选框值。 我认为应该是这样的。

$data = array(
        'type_id' => $this->input->post('priv_type_id'),
        'module_name' => 'Classes',
        'can_access' => $this->input->post('classes[0]'),
        'can_insert' => $this->input->post('classes[1]'),
        'can_delete' => $this->input->post('classes[2]'),
        'can_update' => $this->input->post('classes[3]'),
        'can_export' => $this->input->post('classes[4]'),
        'can_print' => $this->input->post('classes[5]'),
    );

答案 1 :(得分:0)

如果要使用任何阵列在视图上添加复选框,则可以使用相同的数组来比较选中的复选框或不选中的复选框。

例如,这里是在视图中添加复选框的数组

$data[0] = 'can_access';
$data[1] = 'can_delete';
$data[2] = 'can_update';

在您的视图中,您的代码将是

<?php foreach($data as $key => $value){ ?>
  <div class="col-md-1">
   <input type="checkbox" name="classes[<?php echo $key; ?>]" />
  </div>
<?php } ?>

表单提交后,您必须使用相同的数组来检查$ data数组。 提交后的控制器代码将是

$builddata = [];
foreach($data as $key =>$value){
  if(isset($this->input->post('classes['.$key.']'))){
     $builddata[$value] = true;
  }else{
    $builddata[$value] = false;
  }
}
printr($builddata);

你的数组将像这样构建

$builddata['can_access'] = true/false;
$builddata['can_delete'] = true/false;
$builddata['can_update'] = true/false;

答案 2 :(得分:0)

您无法像这样访问帖子数据。见下面的代码

public function set_priv(){
    $classes = $this->input->post('classes');
    $data = array(
    array(

        'type_id' => $this->input->post('priv_type_id'),
        'module_name' => 'Classes',
        'can_access' => $classes[0],
        'can_insert' => $classes[1],
        'can_delete' => $classes[2],
        'can_update' => $classes[3],
        'can_export' => $classes[4],
        'can_print' => $classes[5],

        ),
    //  ),
    );

}