如何从我的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'> ". $newcup ." ". $newpd ."</td>";
echo"<td bgcolor=".$bgcolor." id='myGlob2' > ". $newns ."</td>";
echo"<td > </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());
}
这是一张图片:
Anybodu一个想法?
提前THX答案 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>";