使用php和db更新处理表单提交中的复选框

时间:2013-12-11 01:08:19

标签: php

我在表单中使用复选框允许用户打开/关闭某些设置。我通过从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语句。打算玩一些阵列,看看我能想出什么。

1 个答案:

答案 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
}