-2

whileループで生成されるチェックボックスがあります。これらのチェックボックスは常に初めてチェックされ、データベースに保存されている値は「オン」です。しかし、ユーザーがチェックを外すと、データベースに「オフ」を保存したいと思います。しかし、私の問題は、チェックボックス名にアクセスして、ボタンのクリック時にどのチェックボックスがオフになっているかを確認できないことです。私はこのコードを書きました

while($row = mysql_fetch_assoc($result)) {
   if($pck_id_renew == 'On')
   {
     echo '<td class=c><input type="checkbox" id="renew_chk" name="renew_chk"  
       checked="checked" style="width:50px" value="On"/></td>'; 
   }
   if($pck_id_renew == 'Off') {
     echo '<td class=c><input type="checkbox" id="renew_chk" name="renew_chk"   
       style="width:50px" value="Off"/></td>';  
   }
}
4

1 に答える 1

0

チェックされているチェックボックスの入力値のみを受け取ります。配列を使用して、使用可能なすべてのチェックボックス名を配列に格納します。この配列をループして、どのチェックボックスがオン/オフになっているかを検出します。

コードは次のようになります。

// Define available checkboxes
$inputs = array('renew_chk', ...);

// Check input values
$values = array();
foreach ($inputs as $input) {
  if (isset($_POST[$input])) {
    $values[$input] = 'On';
  }
  else {
    $values[$input] = 'Off';
  }
}

// Loop through $values and store value in database
foreach ($values as $input => $value) {
  // UPDATE database SET $input = $value WHERE id = [n];
}
于 2012-06-03T12:55:42.633 に答える