php - 未选中的复选框返回空值

标签 php jquery html mysql cordova

我有一组复选框,当检查时它们将值传递为1,否则它们的值将其传递为0。但是,而不是将未选中的复选框的值作为'0'发送,而是发送的值是'null '.

我有以下 JS 代码,应该相应地将值设置为 0/1,但是该值仍然作为 NULL 发送。是否可以采取任何措施来确保在未选中复选框的情况下传递的值为 0?

$('#cb1, #cb2, #cb3, #cb4').on('click', function ()
    $(this).val(this.checked ? 1 : 0);
});

已更新 这是我的 html:

<input type="checkbox" name="cb1" id="cb1" value="1" checked />
<input type="checkbox" name="cb2" id="cb2" value="1" checked />
<input type="checkbox" name="cb3" id="cb3" value="1" checked />
<input type="checkbox" name="cb4" id="cb4" value="1" checked />

它们都是默认选中的。

如果其中一个未选中,MySQL 将报告以下错误: 0SQLSTATE[23000]:违反完整性约束:1048 列“ColumnName”不能为空。

这是因为列被设置为不为空。即使我已将默认值设置为 0,单击提交按钮后我仍然会收到错误消息。我试图删除 Not NULL 属性,但没有将值预填充为 0,而是数据库中的输入为 NULL。

最佳答案

如果复选框未选中,则不会发送,因此如果未选中,将其值设置为 0 没有帮助 - 它始终返回 NULL。

有两种方法可以轻松解决这个问题:

1) 假设 PHP 参数中的 NULL 表示复选框未选中。如果复选框并不总是存在于页面上,则可能会出现问题。听起来,复选框的数量是可变的,所以这可能行不通。

2) 在复选框BEFORE 添加一个与复选框同名且值为 0 的隐藏输入。如果未选中复选框,将使用隐藏字段值,如果选中,将使用复选框值。

<input type="hidden" name="checkbox_1" value="0">
<input type="checkbox" name="checkbox_1" value="1">

注意:如果您的名称是数组形式(即它们中有方括号),这将不起作用,因为隐藏字段也会增加数组计数。

关于php - 未选中的复选框返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14067215/

相关文章:

php - 在 Yii2 中设置非规范化列的最佳实践

php - 如何修复这个重复的 key ?

jquery - 滚动 - 单击无法在固定侧边栏内滚动自定义滚动条

javascript - 在 if 语句中访问数组

javascript - 交换div中两个字符串的位置

javascript - 制作 JavaScript 游戏的难度

php - 删除magento中的空类别

javascript - 起始页面加载时的 php + jquery 事件

html - div 垂直和水平定位

html - Bootstrap 堆叠行在响应式中不起作用