2011-03-19 91 views
2

如果我有与具有有相同的数组作为名称属性

名称=“1_1 []”

两个复选框形式和既不那些的复选框被打勾,有什么办法可以知道他们出现在表单中?如果未选中这些字段,则不会通过$ _POST数组发送。

我在问这个原因,这些名称值是动态生成的,我并不总是知道它们是什么,我必须验证它们(确保至少有一个被选中)。

我是否必须开始使用隐藏字段来发送名称属性值,还是有更好的方法?

+0

将这个在复选框以上: 编辑:忘了读取的最后一行。我实际上使用隐藏的领域,我认为这是最简单的方法。否则,您应该在服务器端页面验证该字段是否已设置。 – 2011-03-19 22:34:45

回答

2

如果你真的无法到达接收页面上的数据,如果你想继续使用复选框,使用隐藏字段可能是最明智的方式。如果未选中,则无法通过复选框发送值,这就是它们的工作原理。

另一方面,接收页面不知道要发送什么数据听起来很奇怪。你不能重新获取相同的数据吗?

+0

接收页面不知道什么数据期望导致表格动态构建(ala surveymonkey),名称参数包含连接的数据库标识。谢谢,我会去隐藏的领域。 – stef 2011-03-20 11:05:22

+0

@stef:你从哪里得到的数据定义了首先要显示的字段? – 2011-03-20 11:56:39

+0

这是调查设计器应用程序的一部分,所以字段参数存储在数据库中。 – stef 2011-03-21 09:04:27

1

它们不在$ _POST数组中的事实意味着您可以使用isset()来查看它们是否已设置。

如果你有两个复选框和一个需要设置至少,你可以这样做:

$missingValue = TRUE; 

if(isset($_POST['checkbox_foo'] || isset($_POST['checkbox_bar']) 
{ 
    $missingValue = FALSE; 
} 

如果这还不够好,你必须去与隐藏字段。