2016-09-17 12 views
0

Codeigniterを使用してチェックボックス[配列]からデータベースにデータを挿入します。チェックボックスがチェックされたときにオフにした場合 私の場合は、その後、私のコントローラプロセスは、それがその後、値は、ここで0.1チェックボックスフォームから基準ベースassesmen Userチェックです私の見解は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[] 

である私は、 'テーブルに挿入します尻尾。ここに私のコラムは注意が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に注意してくださいフォームにアクセスするためのコントローラのコードです。更新する前に正しいdb列名を使用することができます。

+0

ありがとうございます!できます... – Chris

関連する問題