使用php

时间:2016-01-23 06:50:36

标签: php html forms

我遇到问题,三次提交同一表格但行动不同。请参阅以下代码:

    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数组中的已发布值(带按钮名称即{。{1}})但是当点击第二个按钮时,还获得POST数组中的所有已发布值按钮的名称(即$_POST['btn_submit']=> Submit)。在第二个按钮单击我想更新一些数据库记录,但由于其条件$_POST['btn_sub'] => Submit不正确所以它不进入这种情况,我的数据库记录没有更新,其余的数组元素显示但不是提交按钮。

此功能适用于我的本地服务器,但在将其上传到实时服务器后,它无法正常工作。

我不明白为什么会这样,请帮助我。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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; 
  }   
}

答案 2 :(得分:1)

您可以遵循许多方法::

方法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),您可以阅读&#34; row&#34;作为获取索引的数组:

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

$ _ POST [&#39; row&#39;]将是一个只包含一个元素的数组,格式为index =&gt;价值(例如:&#39; 2&#39; =&gt;&#39;某事&#34;)。

Read Here About Index Here

=========================== 根据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);
}

&GT;

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