我在表单中使用复选框允许用户打开/关闭某些设置。我通过从db返回的值提供正确的“状态”来加载表单。然后,他们可以更改这些内容并提交表单。实施例...
<input type="checkbox" name="settings[something]" '.($settings[one] == 1 ? 'value="1" checked' : 'unchecked').'/>
<input type="checkbox" name="settings[somethingelse]" '.($settings[one] == 1 ? 'value="1" checked' : 'unchecked').'/>
... and so on...
在接收端,我似乎无法想出一个很好的解决方案来处理这些问题。
如果取消选中其中任何一个,则甚至不会发送该值。如果选中则值为“1”。
所以,除了做以下事情之外:
$something = $_POST['settings'][something']
$somethingelse = $_POST['settings'][somethingelse']
... and so on
if (!$something == 1)
{
$something = null;
}
... and so on
对于我期待的每一个价值......我在这里错过了一种更简单的方法吗?我必须检查每个值是否已发送,因为我还包括一个选项,将这些值设置为我的数据库中多行的默认值 - 而不仅仅是他们正在编辑的那些。
编辑:
我花了一些时间来思考这个问题。在我的数据库中,我将它们存储为1或0值。而不是检查它们是否在表单的接收端发布(设置),我将检查它们是否!=到1.我可以在值列表中运行,并且不等于1的所有内容都设置为0这样我就可以在db中更新所有值的完整列表。我在将数据插入数据库(1或0)之前验证数据的完整性。
我现在正试图想出一种更快捷的方法来检查我的'列表'来检查而不是每个的if语句。打算玩一些阵列,看看我能想出什么。
答案 0 :(得分:0)
复选框有点特殊,因为它们在未经过检查时不会发送到服务器。
因此检查复选框的最佳方法不是它的值,而只是检查它是否已设置:
if (isset($_POST['settings']['something']))
{
// Do what you need to do
}
else
{
// The checkbox was not on the form (you should know that already) OR unchecked
}