我想使用PHP脚本检查并取消选中我的表单的复选框

时间:2011-01-18 11:34:18

标签: php

嗨,大家好我想使用PHP脚本检查并取消选中我的表单的复选框。 在数据库中我使用数据类型TinyInt存储0或1。 我正在使用以下代码。

<tr>
    <td><div id="formEditProfileLblAEmail">Allow Email</div> 
    </td><td><input type="checkbox" checked="<?php

$sql = "Select firstname,middlename,lastname,nickname,require_email,allow_scores from user_info where username = '".$_SESSION['username']."'";
  $result=mysql_query($sql);
  $count=mysql_num_rows($result);
  $row = mysql_fetch_array($result); 


          if($count>0)
          {

             if($row['require_email']=='1')
              {
                 echo 'checked';
              }
              else
              {
                 echo 'unchecked';
              }
          }
          else
              echo 'unchecked';

          ?>" name="formEditProfileChkAEmail"  id="formEditProfileChkAEmail" /> </td></tr>

但我的复选框总是会被检查我是否在数据库中有0或1。

4 个答案:

答案 0 :(得分:5)

如果只是在内部添加

,请不要使用else部分

删除if

之外的checked="
<input type="checkbox" 
<?php if($row['require_email']=='1')  {
                 echo 'checked="checked"';
 }

与您希望取消选中的复选框无关。

答案 1 :(得分:2)

根据HTML specschecked属性是布尔值。也就是说,如果您没有将其设置为暗示为false的值,则用户代理将可能确定它是真的,即已选中。从历史上看,此属性的 presence 表示应该选中该框,因此这可能是默认值。

您可以通过查看来源对此进行测试 - 我怀疑您将使用checked="unchecked"呈现您的页面,这仍然会将该框呈现为已选中。

您可以通过在PHP源代码中将“unchecked”更改为“false”来解决此问题,以便获得您正在寻找的正确布尔行为。

编辑:规范进一步继续定义boolean attributes can only take one legal value(暗示true) - 所以要生成正确的HTML,并将此属性设置为false,这是执行此操作的唯一方法是完全省略属性。 Shakti Singh's answer描述了如何实现这一目标(并获得了+1)。

答案 2 :(得分:1)

checked property没有“未选中”等值,因此您需要回复:

checked="checked"

如果值>&gt; 0,如果它是0,则什么也没有。

答案 3 :(得分:0)

是否正在打印文字?试试checked="checked"