[英]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.