PHP的一个表单、多个组值

PHP的一个表单、多个组值,php,html,Php,Html,我想做的是使用一个表单来承载不同的输入组,如示例所示。我使用伪属性“group”,因此当php接收到输入时,它可以区分从group1或group2接收到的par1。虽然为了清晰起见,示例仅显示了两个组,但我正在构建的应用程序需要在不同的页面上显示五百多个这样的组,因此我希望尽可能避免使用多个表单: <form action='main.php' method='post'> <input type='submit' value='Group1' name='Action' g

我想做的是使用一个表单来承载不同的输入组,如示例所示。我使用伪属性“group”,因此当php接收到输入时,它可以区分从group1或group2接收到的par1。虽然为了清晰起见,示例仅显示了两个组,但我正在构建的应用程序需要在不同的页面上显示五百多个这样的组,因此我希望尽可能避免使用多个表单:

<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>

PHP只需要为相关字段指定相同的名称,并为同一组中的每个字段指定不同的索引,例如(我使用“fieldset”和“legend”使其更美观),请注意,输入的名称为“group1[x]”和“group2[x]”:


@Jose Manuel Abarca Rodríguez从本质上说,这是问题的解决方案,有一个区别我在最初的帖子中可能没有说清楚:我只需要在PHP端保留一个组,而不是使用
$\u post[“group1”]我需要使用
$\u POST[“$\u POST[“提交”]”所以我只得到了与相对提交相关的组。为了将来的参考,我发布了一个完整的例子来说明我的意思:

<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接收整个变量块,然后只保留所需的内容,而不是只接收所需的部分。谢谢你的贡献

主要是为了避免100多条额外线路。实际上是出于优化原因。您可以不使用
group='Group1'
,而是使用group->
name='par1[Group1]'
name='Group1[par1]'
键创建输入名称数组。然后在表单提交中,您可以在php中按组对所有值进行分组。您可以对所有输入使用
name='par1[]'
。在
php
中,您将获得数组中的数据:
$\u POST['par1']
。通过数组中的索引可以区分项。这听起来是正确的路径,但我不知道如何用PHP读取键。我将通过相对提交的值知道我需要什么键,但是如何将该值转换为变量名呢?制作一个用键连接值的函数会再次导致大量的重复代码。哦,我想我找到了答案。二维
name='par[Group1][1]'
。因此,我可以使用提交的值作为第一个维度!非常感谢你的帮助!
Array ( [0] => 111 [1] => 222 [2] => 333 )

Array ( [0] => 444 [1] => 555 [2] => 666 ) 
<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 
if ( isset( $_POST[ "submit" ] ) )
   {
        $par1 = $_POST[ "$_POST[ "submit" ]" ]['par1'];
        $par2 = $_POST[ "$_POST[ "submit" ]" ]['par2'];
        $par3 = $_POST[ "$_POST[ "submit" ]" ]['par3'];
   }
?>