2016-01-23 57 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位于隐藏区域和两个可见输入字段中。并且在点击最后第三个按钮后,隐藏字段和可见字段值被发布,但不是按钮名称。 –

相关问题