PHP:复选框和名称问题

时间:2011-04-22 09:20:43

标签: php arrays post checkbox

我第一次在PHP中编写了一个脚本来处理包含复选框的POSTed表单。

如您所知,复选框使用相同的名称属性进行分组,当出现多个值时,$ _POST [“some_name”]应该将这些复制存储在数组中。

我测试过但是没有预期的数组,我得到了一个值 - 最后一个检查项的值。

此时有点疑惑,我看一些文档发现,使用PHP时,复选框名称应以[]结尾。是这样吗? HTML表单和处理它的脚本之间存在什么样的疯狂关系?假设我无法访问HTML字段名称?假设,就我而言,我有充分的理由不改变我的命名方案只是为了一些晦涩的废话。

现在,似乎至少存在一个问题的解决方案:PHP: Retrieving value of checkboxes when name doesn't have array

我想知道在没有这些疯狂括号的情况下是否有一种非常简单的方法,顺便说一下,您对这一点有何看法?我是唯一一个震惊的人吗?

编辑:好的,我当然可以解决这个问题,但我希望提出一些关于HTML和PHP之间某种“不分离关注点”的基本观点。显然,PHP的业务应该是如何编写HTML代码的。

3 个答案:

答案 0 :(得分:0)

在复选框的html代码中:

name="mycheckboxname[]"

答案 1 :(得分:0)

你没有在你的命名方案中加入[]是什么原因?我不认为这特别令人震惊。就PHP而言,也许您实际上只希望从具有该特定名称的最后一个元素获取值。

有一些替代方案,例如您在问题中包含的方案,或者使用某些javascript技巧获取值,但我认为您不会发现任何更简单的方法,只需在复选框的名称中添加括号即可。< / p>

答案 2 :(得分:0)

你应该试试

<input type="checkbox" name="mycheckbox[]" value="Male" />
<input type="checkbox" name="mycheckbox[]" value="Female" />

In php side,

$myCheckBoxCollection = $_REQUEST['mycheckbox'];