一个表单,PHP的多个组值

时间:2015-06-12 18:43:18

标签: php html

我想要做的是使用单个表单来托管不同的输入组,如示例中所示。我使用伪属性“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>

2 个答案:

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