麻烦复选框,mysql和php

时间:2011-12-20 22:43:50

标签: php mysql forms checkbox

我正在尝试使用表单上的复选框,并希望将值保存为数据库中的1或0。

在我的数据库中,我有一个名为“subscribe”的字段,其中包含以下属性:

TINYING(4)
Not Null
Default value = '0'

在我的html表单中,我有以下内容:

<input type="checkbox" value="1" name="subscribe" checked>Subscribe to our newsletter<br />

如果表单以默认的检查状态提交,则记录会很好地传递给数据库。

如果有人取消选中该复选框,则不会保存任何记录。

为什么会发生这种情况?你需要看到php来帮忙吗?

谢谢你, 森

2 个答案:

答案 0 :(得分:0)

Web浏览器不会为未选中的复选框发送键值对。 做一个print_r($_POST);来观察这个

要么取消订阅除已发布的订阅值以外的所有内容,要么使用隐藏的输入字段来存储您在表单中输入的复选框值。

答案 1 :(得分:0)

我认为你应该使用BOOLEAN(TINYINT(1))类型,而不是TINYINT(4)。并且不要将表单中的值直接传递给查询。使用if()检查值,并为查询赋予每个变量一个布尔值。像这样:

$subscribe = 0;

if(isset($_POST['subscribe']) && $_POST['subscribe'] == "1")
  $subscribe = 1;

mysql_query("... VALUES ('".$subscribed."' ...");

对于有效的XHTML,请使用checked="checked"代替checked