2011-10-21 107 views
0

我有多個表單,我有一個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

試圖回答。我希望我最後得到了你的模糊問題 –

回答

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,爲第二種形式和I,J,K,L爲第三形式小時,並在提交第二表單產生了以下的輸出:

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

這與我的@Herbert有什麼不同? –

+0

我剛解決了這個問題?它仍然沒有道理,但我將PHP腳本移到所有表單的頂部,現在它可以工作?我猜這個腳本也被複制到了每個表單中,因爲每個表單都有一個腳本的副本!我不知道,但它現在正在工作! Thanx –

+1

對不起@Jay。直到現在我纔看到你的評論。我想你在那裏回答了你自己的問題。主要區別在於所有輸入字段都有名稱。顯然,第二個區別(你的原始問題不明顯)是代碼位於頂部。無論如何,我很高興你的工作。 – Herbert

8

當我點擊提交任何特定的形式,其提交的所有形式。

這是不正確的。
一旦您的表格格式正確,您的瀏覽器將只提交當前的格式。
(和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次?如果是這樣,那麼這將是一個問題,因爲表格是從數據庫動態生成的! –

1

@Jay

其實它並不難。

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

寫一個php塊來完成你的功能(創建/更新/檢索/刪除) 無論按下哪個按鈕,默認情況下它只提交與它一起封閉的元素。


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

與形式上面試試這個。

0

如果您需要動態表單,您可以嘗試下面的代碼。雖然可以更改語句以從數據庫獲取數據並使用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 ..

相關問題