簡體   English   中英

使用php提交帶有三個按鈕的相同表單

[英]Submit same form with three buttons using 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_submit']=> Submit POST $_POST['btn_submit']=> Submit )但是當點擊第二個按鈕時,也會在POST中獲得所有發布的值數組除了按鈕的名稱(即$_POST['btn_sub'] => Submit )。 在第二個按鈕單擊我想更新一些數據庫記錄,但由於其條件if(isset($_POST['btn_sub']))不正確所以它不進入這種情況,我的數據庫記錄沒有更新,其余的數組元素顯示但不是提交按鈕。

此功能在我的本地服務器上運行,但在將其上傳到實時服務器后,它無法正常工作。

我不明白為什么會這樣,請幫幫我。

試試這個代碼

<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>

使用相同的名稱提交按鈕

<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:

如果您可以在提交時更改頁面,則單擊提交請求的方式將轉到兩個不同的頁面。 有新的HTML5方法來處理這個問題:

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

顯然這在IE9及更早版本中不起作用,但對於其他瀏覽器,你應該沒問題(參見: w3schools.com HTML格式屬性)。

方法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),您可以將“row”作為數組讀取以獲取索引:

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

$ _POST ['row']將是一個只包含一個元素的數組,格式為index => value(例如:'2'=>'something“)。

在這里閱讀索引

=========================== 根據OP方法的新答案 ================= =

我已經嘗試了你的表單結構,我完全得到了第二個按鈕名稱。

<?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 ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM