2017-08-22 19 views
1

ユーザアクセスの場合、約50+個のチェックボックスがあります。チェックボックスは次のようになります。私はループ状であるデータベース、の値を更新/追加する介してそのそれぞれの値を持つ複数のチェックボックスを有するループを使用して複数のチェックボックスデータを更新する

<input name="PREFIX_1" type="checkbox"> 
<input name="PREFIX_2" type="checkbox"> 
<input name="PREFIX_3" type="checkbox"> 
........... 

次のときI問題がある

foreach ($_POST as $field => $value) { 
    if (preg_match('/^PREFIX_/', $field)) { 
     $access = isset($value)?'1':'0'; 
     $file = substr($field, 4); 
     $this->db->query('UPDATE_DESIRED_TABLE'); 
    } 
} 

ループforeach ($_POST as $field => $value)を使用してデータベース内の値を追加/更新し、接頭辞をチェックすると、チェックされたチェックボックスの値のみが取得され、チェックされていないデータの値は$_POSTデータに含まれません。

そして、私はチェックされていない値は得られません。それはそのチェックボックスの名前さえありません。換言すれば、チェックされた値のみが設定される。

これで、データベースのデータと投稿データの両方を比較することによって、データベース内のすべてのデータの値を変更する必要がありました。

どうすればこの問題を解決できますか?

+2

ちょうど答えのhtml部分を確認してください: - https://stackoverflow.com/questions/1809494/post-the-checkboxes-that-are-unchecked –

答えて

1

<form action="" method="post"> 
    <input type="hidden" id="PREFIX_1_" name="PREFIX_1" value="0"> 
    <input type="checkbox" id="PREFIX_1" name="PREFIX_1" value="1" /> 

    <input type="hidden" id="PREFIX_2_" name="PREFIX_2" value="0"> 
    <input type="checkbox" id="PREFIX_2" name="PREFIX_2" value="1" /> 

    <input type="hidden" id="PREFIX_3_" name="PREFIX_3" value="0"> 
    <input type="checkbox" id="PREFIX_3" name="PREFIX_3" value="1" /> 

    <input type="submit" name="sub" value="Go" /> 

</form> 

あなたはこれでもうissetを使用するカントしかし、このようにPHPを変更:

if(isset($_POST['sub'])) 
{ 
    foreach ($_POST as $field => $value) 
    { 
     if (preg_match('/^PREFIX_/', $field)) 
     {   
      $access = $value; 
      $file = substr($field, 4); 
      $this->db->query('UPDATE_DESIRED_TABLE'); 
     } 
    } 
} 
0

あなたは$checkBoxCount例に保存されたチェックボックスの数を、知って考えると、あなたは、ループのこの種を使用することがあります:

for ($i = 1; $i <= $checkBoxCount; $i++) 
{ 
    $access = ((isset($_POST["PREFIX_" . $i])) ? ('1') : ('0'))); 
    //manage DB 
} 
あなたはこのようなチェックボックスと一緒に隠し入力を送信する必要があります
関連する問題