如何使用一个PHP脚本处理多个表单

时间:2011-10-21 12:37:08

标签: php html forms submit

我有多个表单,我有一个PHP脚本,我想用来处理这些表单,但是当我点击提交任何表单时...脚本由表单的数量处理,提交按钮命名'submitForm'在这种情况下,警报将显示3次而不是一次!我做得不对劲?

NB。我希望这很有意义吗?

html代码

<form action="" name="form1" method="post">
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form2" method="post">
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form3" method="post">
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

php脚本

<?php 
     if (isset($_POST['submitForm'])) { 

     echo('<script>alert("Form Submitted")</script>');

     }
?>

4 个答案:

答案 0 :(得分:8)

  

当我点击提交任何特定表格时,它会提交所有表格。

这不是真的 表单格式正确后,浏览器将仅提交当前格式 (和PHP无关)

然而,如果你的意思是,整个页面将被重新加载。这没关系 - 当您提交表单时,页面会重新加载。如果您需要其他行为,您必须解释您的意愿。

另请注意,没有任何文本字段发送到服务器,因为它们没有名称。

  

我想我应该问的问题是,如何将特定表单传递给php,而不是编写多个php脚本来处理每个表单!

好吧,似乎你想问一下如何区分这些形式。

为每个

添加隐藏字段
<input type="hidden" name="step" value="1" />

然后在PHP中

if ($_POST['step'] == 1) {
  //first form
}
if ($_POST['step'] == 2) {
  //second
}

答案 1 :(得分:3)

这向php提交了一种形式的许多形式。复制,粘贴,测试和学习。

<?php
     if (isset($_POST['submitForm'])) { 

    print_r($_POST);

     }

?>
<form action="" name="form1" method="post">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form2" method="post">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form3" method="post">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

对于第一种形式使用a,b,c,d,对于第二种形式使用e,f,g,h,对于第三种形式使用i,j,k,l并提交第二种形式,得到以下输出: / p>

Array
(
    [A] => e
    [B] => f
    [C] => g
    [D] => h
    [submitForm] => Submit Form
)

答案 2 :(得分:1)

@Jay

Actually its not hard.

Once you supply form names, your work is done. the DOM does the rest.

write one php block to do your functions (create/update/retrieve/delete) Whichever button is clicked, by default it submits only the elements enclosed together with it.


if(!empty($_POST)){
    if(isset($_POST['submit'])){
        print "<pre>";
        var_dump($_POST); // write your code here as you would 
        print "<pre>";
    }
}

try this with your form above.

答案 3 :(得分:0)

如果您需要动态表单,可以尝试以下代码。虽然可以更改语句以从DB获取数据并使用foreach。希望你知道这一点。 在这里,我使用while($ n&lt; 10)表示10种动态表单。 如果您需要单独的表单名称,也可以使用以下标记。

<form action="" name="form<?=$n?>" method="post">

这将创建单独的表单名称,例如form1,form2等,但这里不需要。

    <?php
if (isset($_POST['submitForm'])) { 
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
}
$n=0;
while($n<10) {
    $n++;
    ?>
    <form action="" name="form1" method="post">
      <input type="text" value="" name="A" />
      <input type="text" value="" name="B" />
      <input type="text" value="" name="C" />
      <input type="text" value="" name="D" />
      <input type="Submit" value="Submit Form" name="submitForm" />
    </form>
    <?php
}
?>

点击第5行时输出的示例页面。