我第一次在PHP中编写了一个脚本来处理包含复选框的POSTed表单。
如您所知,复选框使用相同的名称属性进行分组,当出现多个值时,$ _POST [“some_name”]应该将这些复制存储在数组中。
我测试过但是没有预期的数组,我得到了一个值 - 最后一个检查项的值。
此时有点疑惑,我看一些文档发现,使用PHP时,复选框名称应以[]
结尾。是这样吗? HTML表单和处理它的脚本之间存在什么样的疯狂关系?假设我无法访问HTML字段名称?假设,就我而言,我有充分的理由不改变我的命名方案只是为了一些晦涩的废话。
现在,似乎至少存在一个问题的解决方案:PHP: Retrieving value of checkboxes when name doesn't have array
我想知道在没有这些疯狂括号的情况下是否有一种非常简单的方法,顺便说一下,您对这一点有何看法?我是唯一一个震惊的人吗?
编辑:好的,我当然可以解决这个问题,但我希望提出一些关于HTML和PHP之间某种“不分离关注点”的基本观点。显然,PHP的业务应该是如何编写HTML代码的。
答案 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'];