PHP:如何存储和复选框值并更新它们

时间:2013-12-10 10:59:36

标签: php mysql arrays forms checkbox

我在存储和更新复选框值方面遇到问题。 当我选择/取消选择它们时,它都有效,但是当我选择最后一个时,该值被设置为第一个未选中的框,依此类推。

HTML表单:

echo'<input type="hidden" name="numOfRows" value="'.mysql_num_rows($query).'">';

if ($row[10]==1)
 {
  echo'<input type="checkbox" id="activateExam" name="activateExam[]" value="1" checked="checked">';
 }
else if ($row[10]==0)
 {
  echo'<input type="checkbox"  id="activateExam"  name="activateExam[]" value="0" >';
 }
echo'<input type="hidden" name="id[]" value="'.$row[0].'">';

PHP代码:

for ($i = 0; $i < $_POST['numOfRows']; $i++)
{
if (isset($_POST['activateExam'][$i]))
{
    $activateExam = '1';
}
else
if (!isset($_POST['activateExam'][$i]))
{
    $activateExam = '0';
}

$id = $_POST['id'][$i];
echo "exam" . $activateExam . " id: " . $id;
$sql = "UPDATE `student` SET `activateExam`='" . $activateExam . "' WHERE `ID`='" . $id . "'";
$query = mysql_query($sql);
if (!$query) echo "Database Error : " . $sql;
}

希望你能提供帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

试试吧

HTML

if ($row[10]==1)
 {
  echo'<input type="checkbox" id="activateExam" name="activateExam[]" value="'.$row[0].'" checked="checked">';
 }
else if ($row[10]==0)
 {
  echo'<input type="checkbox"  id="activateExam"  name="activateExam[]" value="'.$row[0].'" >';
 }

和php

mysql_query("UPDATE `student` SET `activateExam`=0 ") or die(mysql_error()); // update all to 0

if(isset($_POST['activateExam']))
{
   $arr_active_exam = $_POST['activateExam'];
   if(sizeof($arr_active_exam)>0)
   {
      foreach($arr_active_exam as $id)
      {
          mysql_query("UPDATE `student` SET `activateExam`=1  WHERE id='$id' ") or die(mysql_error()); // update all to 1 which is checked 
      }
   }
}