如何使用一个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>');
}
?>
这许多提交到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
)
这与我的@Herbert有什么不同? –
我刚解决了这个问题?它仍然没有道理,但我将PHP脚本移到所有表单的顶部,现在它可以工作?我猜这个脚本也被复制到了每个表单中,因为每个表单都有一个脚本的副本!我不知道,但它现在正在工作! Thanx –
对不起@Jay。直到现在我才看到你的评论。我想你在那里回答了你自己的问题。主要区别在于所有输入字段都有名称。显然,第二个区别(你的原始问题不明显)是代码位于顶部。无论如何,我很高兴你的工作。 – Herbert
当我点击提交任何特定的形式,其提交的所有形式。
这是不正确的。
一旦您的表格格式正确,您的浏览器将只提交当前的格式。
(和PHP无关)
但是,整个页面将被重新加载,如果你的意思是这样的话。这没关系 - 当你提交一个表单时,一个页面打算重新加载。如果你需要另一种行为,你必须解释你的愿望。
另外请注意,没有任何文本字段被发送到服务器,因为它们没有名称。
我想我应该问的问题是,如何将特定的表单传递给php,而不是编写多个php脚本来处理每个表单!
好吧,似乎你想问如何区分这些形式。
添加一个隐藏字段到每个
<input type="hidden" name="step" value="1" />
,然后在PHP
if ($_POST['step'] == 1) {
//first form
}
if ($_POST['step'] == 2) {
//second
}
我没有使用html来提交表单。如果你正确地阅读我的帖子,并通过我的代码,你会意识到我正在使用PHP来处理表单...所以当提交表单时,php处理表单,但是在执行此操作时,它也处理所有其他表单!那就是我的意思 –
“使用php **提交多个**中的一个表单”是您的问题的确切标题,伙计。怪你自己。至于你的表格 - 在这里发布一个相关的可复制代码来证明你的话。 –
您好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 ..
你有什么用“它提交的所有形式”意味着什么?我看到的三种形式是相同的,除了他们的名字不发送给php。而你在PHP中的测试检查$ _POST数组而不是$ _GET。 – Leto
我想我应该问的问题是,如何将特定的表单传递给php,而不是编写多个php脚本来处理每个表单! –
试图回答。我希望我最后得到了你的模糊问题 –