获取未选中复选框的值

时间:2012-10-28 11:03:19

标签: php

如何从我的ckeckbox获取未经检查的值?

我有3个Radiobuttons。当我点击第一个必须选中所有复选框时,第二个radiobutton取消选中所有复选框。 第三个radiobutton可以检查一些复选框,并且所有未被cheked的复选框我想通过UPDATE Query将值从0发送到DB。 radiobuttons工作正常,但我没有得到未选中复选框的值,以将其发送到我的更新查询。 这里是带有formelements的第一页的代码:

    //That is only a short version of my Select who works correct
    $abfrageT = "SELECT DISTINCT id_dexpd, acores.code_regate, detail_exp_devise.num_expertise ...
                    FROM acores, infos_bureau, demande_expertise_dev, detail_exp_devise, agents
                        WHERE acores.id_acores = '$id_acores'
                        AND demande_expertise_dev.date_dem_exp = '$expdev' ...";

    $ergebnisT = mysql_query($abfrageT) or die("Query failed with error: ".mysql_error());

        while($abfrageT = mysql_fetch_assoc($ergebnisT))
        {
            $newcup         =   $abfrageT['coupure'];
            $newpd          =   $abfrageT['code_devise'];
            $newns          =   $abfrageT['num_serie'];
            $IDX            =   $abfrageT['id_dexpd'];
            $NumExp         =   $abfrageT['num_expertise'];

  echo"<tr>";
// Here are the ckeckboxes:
  echo"<td bgcolor=".$bgcolor." id='myGlob2' align='center'><input type='checkbox' name='check1' value='$abfrageT[id_dexpd]' /></td>";
  echo"<td bgcolor=".$bgcolor." id='myGlob2'>&nbsp;&nbsp;". $newcup ." ". $newpd ."</td>";
  echo"<td bgcolor=".$bgcolor." id='myGlob2' >&nbsp;&nbsp;". $newns ."</td>";
  echo"<td >&nbsp;&nbsp;</td>";      
  echo'</tr>';

这里是我的更新第二页的代码:

$NumExp         = $_GET['NumExp'];
$IDX            = $_GET['check1']; 

$QryUpAnswerIdn = "UPDATE detail_exp_devise SET detail_exp_devise.exp_val  = 1
                WHERE detail_exp_devise.num_expertise = $NumExp
                AND id_dexpd = $IDX";
$ResUpAnswerIdn = mysql_query($QryUpAnswerIdn) or die("Query failed with error: " . mysql_error());

if ($IDX) {
$QryUpAnswerId = "UPDATE detail_exp_devise SET detail_exp_devise.exp_val  = 0
                WHERE detail_exp_devise.num_expertise = $NumExp
                AND id_dexpd = $IDX";
$ResUpAnswerId = mysql_query($QryUpAnswerId) or die("Query failed with error: " . mysql_error());   
}

这是一张图片: enter image description here

Anybodu一个想法?

提前THX

2 个答案:

答案 0 :(得分:3)

您无法获取未选中复选框的值。浏览器根本不会提交它们。有一些解决方法(例如使用<input type="hidden">并使用JavaScript更新它),但这些非常hacky,我不建议您使用它们。

最简单的方法是进行两次查询。

一个将所有值重置为0,第二个将所选值更新为1.

在您的示例中,在处理表单之前添加以下查询:

UPDATE detail_exp_devise SET detail_exp_devise.exp_val  = 0

答案 1 :(得分:0)

我不知道这是否是最佳做法,但我发送每个复选框我使用具有相同名称和值0的隐藏输入。这样,即使复选框为false,隐藏输入值为0也是发送到服务器。

在你的情况下:

// Here are the ckeckboxes:
echo"<td bgcolor=".$bgcolor." id='myGlob2' align='center'>
  <input type='hidden' name='check1' value='0' />
  <input type='checkbox' name='check1' value='$abfrageT[id_dexpd]' />
</td>";