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

问题描述:

我有多个表单,我有一个php脚本,我想用它来处理这些表单,但是当我点击提交任何表单时......脚本处理在这种情况下,提交按钮名为“submitForm”的表单数量,警报将显示3次而不是一次!我不正确的是什么?如何使用一个php脚本处理多个表单

注意:我希望这很有意义?

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>'); 

    } 
?> 
+1

你有什么用“它提交的所有形式”意味着什么?我看到的三种形式是相同的,除了他们的名字不发送给php。而你在PHP中的测试检查$ _POST数组而不是$ _GET。 – Leto

+0

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

+0

试图回答。我希望我最后得到了你的模糊问题 –

这许多提交到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,为第二种形式和I,J,K,L为第三形式小时,并在提交第二表单产生了以下的输出:

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

这与我的@Herbert有什么不同? –

+0

我刚解决了这个问题?它仍然没有道理,但我将PHP脚本移到所有表单的顶部,现在它可以工作?我猜这个脚本也被复制到了每个表单中,因为每个表单都有一个脚本的副本!我不知道,但它现在正在工作! Thanx –

+1

对不起@Jay。直到现在我才看到你的评论。我想你在那里回答了你自己的问题。主要区别在于所有输入字段都有名称。显然,第二个区别(你的原始问题不明显)是代码位于顶部。无论如何,我很高兴你的工作。 – Herbert

当我点击提交任何特定的形式,其提交的所有形式。

这是不正确的。
一旦您的表格格式正确,您的浏览器将只提交当前的格式。
(和PHP无关)

但是,整个页面将被重新加载,如果你的意思是这样的话。这没关系 - 当你提交一个表单时,一个页面打算重新加载。如果你需要另一种行为,你必须解释你的愿望。

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

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

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

添加一个隐藏字段到每个

<input type="hidden" name="step" value="1" /> 

,然后在PHP

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

我没有使用html来提交表单。如果你正确地阅读我的帖子,并通过我的代码,你会意识到我正在使用PHP来处理表单...所以当提交表单时,php处理表单,但是在执行此操作时,它也处理所有其他表单!那就是我的意思 –

+0

“使用php **提交多个**中的一个表单”是您的问题的确切标题,伙计。怪你自己。至于你的表格 - 在这里发布一个相关的可复制代码来证明你的话。 –

+0

您好Col ...这意味着我将不得不手动添加每个表单的步骤?即如果我有10个表单,我将不得不添加ifs语句10次?如果是这样,那么这将是一个问题,因为表格是从数据库动态生成的! –

@Jay

其实它并不难。

一旦您提供表单名称,您的工作就完成了。剩下的就是DOM。

写一个php块来完成你的功能(创建/更新/检索/删除) 无论按下哪个按钮,默认情况下它只提交与它一起封闭的元素。


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

与形式上面试试这个。

如果您需要动态表单,您可以尝试下面的代码。虽然可以更改语句以从数据库获取数据并使用foreach。希望你知道这一点。 在这里,我用了10个动态表单($ n < 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 ..