我想要做的是使用单个表单来托管不同的输入组,如示例中所示。我使用伪属性“group”,所以当php收到输入时,它可以区分从group1或group2收到的par1。虽然为了清楚起见,该示例仅提供了2个组,但我正在构建的应用程序在不同页面上需要半个这样的组,因此如果可能的话,我希望避免使用多个表单:
<form action='main.php' method='post'>
<input type='submit' value='Group1' name='Action' group='Group1'>
<input type='hidden' value='543' name='par1' group='Group1'>
<input type='hidden' value='123' name='par2' group='Group1'>
<input type='hidden' value='269' name='par3' group='Group1'>
<input type='submit' value='Group1' name='Action' group='Group2'>
<input type='hidden' value='543' name='par1' group='Group2'>
<input type='hidden' value='123' name='par2' group='Group2'>
<input type='hidden' value='269' name='par3' group='Group2'>
</form>
答案 0 :(得分:2)
PHP只需要您为相关字段指定相同的名称,并为同一组中的每个字段指定不同的索引,例如(我使用“fieldset”和“legend”使其更漂亮),注意输入有名称“group1 [x]”和“group2 [x]”:
<form action='my_script.php' method='post'>
<fieldset>
<legend>Group 1</legend>
<br/>
<input type='hidden' value='111' name='group1[0]'>
<br/>
<input type='hidden' value='222' name='group1[1]'>
<br/>
<input type='hidden' value='333' name='group1[2]'>
</fieldset>
<fieldset>
<legend>Group 2</legend>
<br/>
<input type='hidden' value='444' name='group2[0]'>
<br/>
<input type='hidden' value='555' name='group2[1]'>
<br/>
<input type='hidden' value='666' name='group2[2]'>
</fieldset>
<br/>
<input type="submit" value="Submit form" name="submit" />
</form>
现在,在PHP方面,您可以获得如下数据:
<?php
if ( isset( $_POST[ "submit" ] ) )
{ $group1 = $_POST[ "group1" ];
$group2 = $_POST[ "group2" ];
print_r( $group1 );
echo "<br/><br/>";
print_r( $group2 );
}
?>
如果您使用PHP扩展创建两个文本文件并复制粘贴以前的代码,您将在屏幕上看到如下内容:
Array ( [0] => 111 [1] => 222 [2] => 333 )
Array ( [0] => 444 [1] => 555 [2] => 666 )
答案 1 :(得分:0)
@Jose ManuelAbarcaRodríguez基本上这是问题的解决方案,但有一点不同,我在初始帖子上可能没有说清楚:我只需要在PHP端保留一个组,所以不要使用$_POST[ "group1" ];
我需要使用$_POST[ "$_POST[ "submit" ]" ];
,因此我只会获得伴随相对提交的群组。为了将来参考,我发布了一个完整的例子:
<form action='main.php' method='post'>
<input type='submit' value='Group1' name='Action' group='Group1'>
<input type='hidden' value='123' name=Group1['par1']>
<input type='hidden' value='456' name=Group1['par2']>
<input type='hidden' value='789' name=Group1['par3']>
<input type='submit' value='Group2' name='Action' group='Group2'>
<input type='hidden' value='147' name=Group2['par1']>
<input type='hidden' value='258' name=Group2['par2']>
<input type='hidden' value='369' name=Group2['par3']>
</form>
然后在PHP方面:
<?php
if ( isset( $_POST[ "submit" ] ) )
{
$par1 = $_POST[ "$_POST[ "submit" ]" ]['par1'];
$par2 = $_POST[ "$_POST[ "submit" ]" ]['par2'];
$par3 = $_POST[ "$_POST[ "submit" ]" ]['par3'];
}
?>
我想虽然优化方面它比仅发布一系列表单更糟糕,因为这样PHP从html接收整个变量块,然后只保留所需的内容,而不仅仅是接收所需的部分。谢谢你的贡献!