PHP表单复选框和未定义的索引

sup*_*led 3 php mysql

提交带有未选中复选框的表单时,我收到"未定义索引"错误.除了对每个发布的值进行"isset"或"empty"检查之外,还有其他方法吗?

我看过这个问题并且很难相信这是唯一的解决方案.

下面是一些示例代码:编辑:请注意,这些不是表列的实际名称; 它们的名称是唯一的(如"postAddress,displayPhone,student等)

Jer*_*ten 7

您可以编写一个函数来检查是否选中了复选框:

function checkbox_value($name) {
    return (isset($_POST[$name]) ? 1 : 0);
}
Run Code Online (Sandbox Code Playgroud)

现在在您的查询中调用该函数,如下所示:

$sql =  'UPDATE table SET '.
        'checkbox1 = '. checkbox_value('checkbox1') .','.
        'checkbox2 = '. checkbox_value('checkbox2') .','.
        'checkbox3 = '. checkbox_value('checkbox3') .','.
        'checkbox4 = '. checkbox_value('checkbox4') .','.
        'checkbox5 = '. checkbox_value('checkbox5') .','. "LIMIT 1";
Run Code Online (Sandbox Code Playgroud)


OIS*_*OIS 6

如果要使用开/关复选框,可以在写入复选框之前写入隐藏值.

<input type="hidden" name="checkbox1" value="no" />
<input type="checkbox" name="checkbox1" value="yes" />
Run Code Online (Sandbox Code Playgroud)

这将始终返回一个值,否则(默认情况下除非选中复选框,否则为默认值)或是.

您可以使用FILTER_VALIDATE_BOOLEAN使用过滤器函数验证输入.

如果你为此编写一个函数,比如formCheckbox($ name),它有更简单的选项,值(值'on'表示默认选中复选框),属性等.