我正在尝试使用表单上的复选框,并希望将值保存为数据库中的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来帮忙吗?
谢谢你, 森
答案 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