2016-09-17 50 views
0

我想使用Codeigniter将数据从复选框[数组]插入到数据库中。 我的情况下是用户检查assesmen标准碱从复选框形式,然后我的控制器处理它时,复选框校验,那么值是1,如果取消选中然后0这是我的视图使用Codeigniter将数据从复选框阵列插入数据库

ID | Trimester I | Trimester II | Trimester III | 
21 | checbox_trimester_i[] | checbox_trimester_ii[] | checbox_trimester_iii[] 
42 | checbox_trimester_i[] | checbox_trimester_ii[] | checbox_trimester_iii[] 
23 | checbox_trimester_i[] | checbox_trimester_ii[] | checbox_trimester_iii[] 

我要插入到表' assesmen”。这是我在DB列

ID | ID_pk | Trimester_1 | Trimester_2 | Trimester_3 | 
1 | 21 | 1 | 0 | 1 
2 | 42 | 0 | 1 | 1 
3 | 23 | 1 | 0 | 0 

注*:

ID_pk = ID 
Trimester_1 => checbox_trimester_i[] 
Trimester_2 => checbox_trimester_ii[] 
Trimester_3 => checbox_trimester_iii[] 

这是我的看法形式:

foreach ($kuisioner as $art) { $no++; ?> 
    <tr> 
     <td><input type="hidden" name="id[]" value="<?php echo $art->id ?>"></td> 
     <td align="center"> 
      <input type="checkbox" name="checbox_trimester_i[]"> 
     </td>   
     <td align="center"> 
      <input type="checkbox" name="checbox_trimester_ii[]"> 
     </td>   
     <td align="center"> 
      <input type="checkbox" name="checbox_trimester_iii[]"> 
     </td> 
     </tr> 
    <?php } 

ScreenShoot查看 enter image description here

表单视图 enter image description here

这里是我的控制器,但仍然无法正常工作,请帮我解决它。谢谢

$posted = $this->input->post(); 
$as_trim_satu = isset($posted['checbox_trimester_i']) ? $posted['checbox_trimester_i'] : array(); 
$data = array(); 
    foreach($posted['id'] as $key => $value) 
    { 
    $info_user = array(
    'user_id' => $value, 
    'trimester_satu' => in_array($posted['id'][$key], $as_trim_satu) ?1:0, 
    ); 
    $data[] = $info_user; 
    } 
    echo "<pre>"; 
    print_r($data); 
    echo "</pre>"; 
+0

在代码点火器中,您不应该直接访问$ _POST。它提供$ this-> input类来处理它们。要获得一个帖子变量,你可以使用$ this-> input-> post(“field”); –

+0

喜欢这个? $ trimester_1 = $ this-> input-> post('checbox_trimester_i'); $ check = $ trimester_1 [$ i]? 1:0; – Chris

+0

向我们展示您的视图代码以及您如何通过js或表单的值传递 – Zeeshan

回答

1

您可能需要调整您的视图,如下所示,以获得正确的值到控制器。如果是这样,你可以使用下面的代码。

给出的复选框的名称,如

name="checbox_trimester_i[<?php echo $art->id ?>]" 

见我更新视图。

<?php foreach ($kuisioner as $art) { $no++; ?> 
<tr> 
    <td><input type="hidden" name="id[]" value="<?php echo $art->id ?>"> </td> 
    <td align="center"> 
     <input type="checkbox" name="checbox_trimester_i[<?php echo $art->id ?>]" value="1"> 
    </td>   
    <td align="center"> 
     <input type="checkbox" name="checbox_trimester_ii[<?php echo $art->id ?>]" value="1"> 
    </td>   
    <td align="center"> 
     <input type="checkbox" name="checbox_trimester_iii[<?php echo $art->id ?>]" value="1"> 
    </td> 
    </tr> 
<?php } ?> 

下面是控制器代码访问来自

if($this->input->post()){ 
     $data = array(); 
     $ids = $this->input->post('id'); 
     $checbox_trimester_i = $this->input->post('checbox_trimester_i'); 
     $checbox_trimester_ii = $this->input->post('checbox_trimester_ii'); 
     $checbox_trimester_iii = $this->input->post('checbox_trimester_iii'); 
     if($ids){ 
      foreach ($ids as $key => $value){ 
       $info_user = array(
       'user_id' => $value, 
       'Trimester_1' => !empty($checbox_trimester_i[$value]) ? 1: 0, 
       'Trimester_2' => !empty($checbox_trimester_ii[$value]) ? 1: 0, 
       'Trimester_3' => !empty($checbox_trimester_iii[$value]) ? 1: 0, 
       ); 
       $data[] = $info_user; 

      } 
     } 

     echo "<pre>"; 
     print_r($data); 
     echo "</pre>"; 
    } 

贴在表格数据请注意变量$info_user我创建。更新之前,您可以使用正确的数据库列名称。

+0

谢谢!有用... – Chris

相关问题