【问题标题】:Mutiple checkbox values insertion in db using codeigniter使用codeigniter在数据库中插入多个复选框值
【发布时间】:2016-04-13 10:36:14
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    为什么要使用多维数组来插入数据? 如果您在数组中很好地获取复选框值。 我觉得应该是这样的。

    $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]'),
        );
    

    【讨论】:

    • 我还有 34 条其他记录要添加,这只是 1 条的代码,因为我只是在测试它是否有效。
    • 那么你应该使用循环。
    • 循环不是问题,但是当我只使用 'code' $this->input->post('classes') 'code' 它返回数组 'code' array ( 0 => 'on ', 1 => 'on', 2 => 'on', ) 'code' 所以我找不到选中了哪个复选框,因为它只返回未按正确顺序选中的复选框的数量,意味着它应该返回所有复选框在数组中其他为“关闭”。
    • like this for($a=0; $amodelname->functionname($data[$a]); }
    • 但是当你只使用什么?没听懂,抱歉。
    【解决方案2】:

    如果您使用任何数组在视图上添加复选框,那么您可以使用相同的数组来比较哪个复选框被选中或哪个未被选中。

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

    $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;
    

    【讨论】:

      【解决方案3】:

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

      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],
      
              ),
          //  ),
          );
      
      }
      

      【讨论】:

      • 我正在使用您的方法,但问题仍然存在。如果我选择随机复选框也没关系它总是从第一个复选框打开。我选择了'can delete','can_export','can_print',但结果是数组(0 =>数组('type_id'=>'4','module_name'=>'Classes','can_access'=>'on' , 'can_insert' => 'on', 'can_delete' => 'on', 'can_update' => NULL, 'can_export' => NULL, 'can_print' => NULL, ), )
      • 为每个复选框赋值,然后检查数组中是否可用,将其标记为开启
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2015-02-16
      • 1970-01-01
      相关资源
      最近更新 更多