2016-01-23 146 views
3

我有一個問題提交相同的形式三次,但採取不同的行動。請看下面的代碼:用三個按鈕提交相同的表單使用php

if(isset($_POST['btn_submit'])){ 
     //Some code here 
    } 
    if(isset($_POST['btn_sub'])){ 
     // Some other code here 
    } 

我的HTML代碼如下:

<form name="form" id="form" action="" method="" enctype="multipart/form-data"> 
     <table> 
     <tr> 
      <!-- Some input fields --> 
      <input type="submit" name="btn_submit" id="btn_submit" value="Submit" /> 
     </tr> 
     <tr> 
      <!-- Some more input fields --> 
      <input type="submit" name="btn_sub" id="btn_sub" value="Submit" /> 
     </tr> 
     </table> 
    </form> 

現在,當我點擊第一個點擊提交按鈕,然後我得到了POST數組中貼出值(與按鈕名稱即$_POST['btn_submit']=> Submit),但當點擊第二個按鈕時,除了按鈕的名稱(即$_POST['btn_sub'] => Submit)之外,還獲得POST數組中的所有發佈值。在第二個按鈕點擊我想更新一些數據庫記錄,但由於其條件if(isset($_POST['btn_sub']))不是真實的,所以它沒有進入這個條件,我的數據庫記錄沒有更新,其餘的數組元素顯示,但沒有提交按鈕。

該功能在我的本地服務器上工作,但在上載到服務器之後,它不起作用。

我不明白爲什麼會發生這種情況,請幫我解決這個問題。

+0

變化不同的價值Submit1和Submit2 –

+0

@Devyesh,感謝即時答覆,我試了一下,以及第一個按鈕值「提交」,而第二次作爲「保存」,但我的問題沒有得到解決。 當第一個按鈕被點擊時,然後在第二個按鈕之前顯示一個div與一些記錄(帶有隱藏和顯示的文本框),並且當第二個按鈕被點擊時隱藏值被張貼(顯示在POST數組中),但按鈕名稱不顯示任何想法所以? –

回答

1

試試這個代碼

<form name="form" id="form" action="" method="POST" enctype="multipart/form-data"> 
     <table> 
     <tr> 
      <!-- Some input fields --> 
      <input type="submit" name="btn_submit" id="btn_submit" value="Submit2" /> 
     </tr> 
     <tr> 
      <!-- Some more input fields --> 
      <input type="submit" name="btn_sub" id="btn_sub" value="Submit1" /> 
     </tr> 
     </table> 
    </form> 
+0

當有更多的細節比'嘗試這個代碼'更好的答案。 OP爲什麼要嘗試你的代碼?你在代碼塊中改變了什麼? – Sean

1

使用相同的名稱提交按鈕

<form name="form" id="form" action="" method="POST" enctype="multipart/form-data"> 
    <table> 
    <tr> 
     <!-- Common input fields --> 
     <input type="text" name="commontxt" id="commontxt" value="common text field" /> 
    </tr> 
    <tr> 
     <!-- Some input fields --> 
     <input type="submit" name="btn_submit" id="btn_submit1" value="Submit 1" /> 
    </tr> 
    <tr> 
     <!-- Some more input fields --> 
     <input type="submit" name="btn_submit" id="btn_submit2" value="Submit 2" /> 
    </tr> 
    </table> 
</form> 

檢查它通過這種方式提交按鈕是點擊

if (!empty($_POST)) 
{ 
    if ($_POST['btn_submit'] == 'Submit 1') { 
    //action for Submit 1 here 
    $commontxt = $_POST['commontxt']; 
    echo 'Submit 1<br/>'; 
    echo $commontxt; 
    } else if ($_POST['btn_submit'] == 'Submit 2') { 
    //action for Submit 2 here 
    $commontxt = $_POST['commontxt']; 
    echo 'Submit 2<br/>'; 
    echo $commontxt; 
    } 
} 
1

有許多方法可以遵循這裏::

方法1:

如果你可以改變提交頁面,意味着提交請求轉到兩個不同的網頁的點擊。有新的HTML5的方法來處理這個問題:

<button type="submit" formaction="/action_one">SUBMIT</button> 
<button type="submit" formaction="/action_two">SUBMIT</button> 

顯然,這並不在IE9和更早,但對於其他瀏覽器,你應該罰款(見:w3schools.com HTML formaction屬性)。

方法2

JavaScript方法:

<input type="submit" value="dosomething" onclick="javascript: 
form.action='actionurl1';"/> 
<input type="submit" value="dosomethingelse" onclick="javascript: 
form.action='actionurl2';"/> 

方法3

如果你想保持同一頁面上提交:

<input type="submit" name="row[1]" value="Submit"> 
<input type="submit" name="row[2]" value="Submit"> 

然後在服務器端(在我的例子PHP),你可以閱讀「行」作爲一個數組來獲取指數:

$index = key($_POST['row']); 

$ _ POST [「行」]將只有一個元素的數組,形式index => value(例如:'2'=>'something「)。

Read Here About Index Here

=========================== 新建答案按有機磷農藥接近 ====== ============

我已經嘗試過你的表格結構,我得到完美的第二個按鈕的名稱。

<?php 
if(isset($_POST['btn_submit']) && empty($_POST['btn_sub'])){ 
    echo "First Submit-----------<br/>"; 
    print_r($_POST); 
} 
else if(isset($_POST['btn_sub']) && empty($_POST['btn_submit'])){ 
    echo "Second Submit-----------<br/>"; 
    print_r($_POST); 
} 

?>

HTML

<form name="form" id="form" action="" method="post" enctype="multipart/form-data"> 
    <table> 
    <tr> 
     <input type="text" value="Form1" name="form1_input" /> 
     <input type="submit" name="btn_submit" id="btn_submit" value="Submit" /> 
    </tr> 
    <tr> 
     <input type="text" value="Form2" name="form2_input" /> 
     <input type="submit" name="btn_sub" id="btn_sub" value="Submit" /> 
    </tr> 
    </table> 
</form> 

檢查了這一點,並確認如果你也不在頁面上重複相同的名稱...

我的輸出第二次提交::

Second Submit----------- 
Array ([form1_input] => Form1 [form2_input] => Form2 [btn_sub] => Submit) 
+0

嗨Gags,感謝您的回覆,我嘗試了第三種方法的解決方案,但沒有運氣。並得到錯誤鍵()期望參數1爲數組,文件名中給出的null與行號上的路徑相同。這是因爲btn_submit沒有獲得數組編號。在第二個按鈕爲空之前,該按鈕位於第三個數字上。 –

+0

請發表您如何嘗試過?你有沒有讀過這篇文章將是一個元素的數組。 – Gags

+0

我的html結構就像

for loop openfor loop closed
所有提交按鈕的名稱都是btn_submit [1],btn_submit [2]& btn_submit [3]。當我點擊第一個按鈕,然後在第一個按鈕的情況下,我獲取一些記錄,這些記錄的ID位於隱藏區域和兩個可見輸入字段中。並且在點擊最後第三個按鈕後,隱藏字段和可見字段值被髮布,但不是按鈕名稱。 –

相關問題