表格没有从数据表中提交正确的值

时间:2015-08-30 18:16:36

标签: php html5 forms post datatable

看起来很简单但可能是我在这里忽略了一些东西。

(document).ready(function(){
            $('#data').dataTable();
  }

if (isset ($_POST ['deleteUser'])) 
{ 
  echo "<p>Received the form data</p>"; 
  echo $_POST['hidden']; 
}

<form action="" method="post">
<table id="data">
  <thead>
    <tr>
      <td>First Name</td>
      <td>Delete Name</td>
      <td>Email</td>
      <td></td>
    </tr>
  </thead>
  <tbody>
      <?php 
      $cursor=$collection->find (); 
      foreach ( $cursor as $document ) {
      ?>
      <tr>
        <td class='First_Name'>
          <?php echo $document [ "First_Name"]; ?>
        </td>
        <td class='Last_Name'>
          <?php echo $document [ "Last_Name"]; ?>
        </td>
        <td class='Email'>
          <?php echo $document [ "Email"]; ?>
        </td>
        <td>
          <input type="hidden" name=hidden value='<?php echo $document ["First_Name"]; ?>'>
          <input type="submit" value="Delete" name="deleteUser">
        </td>
      </tr>
      <?php }?>
  </tbody>
</table>
</form>

这里我试图将表中的值发送到同一页面上的php代码。 当我点击删除时,它总是发送最后一行的名字。

是什么导致表单在单击Button时仅提交最后一行? 如何为单击删除按钮的行传递隐藏标记的值?

仅供参考:我已为表格启用了DataTable。

1 个答案:

答案 0 :(得分:1)

您的表单位于错误的位置,因此您只有一个表单,其中包含所有用户。试试这个,它会为每个用户提供一个表格。

<table id="data">
  <thead>
    <tr>
      <td>First Name</td>
      <td>Delete Name</td>
      <td>Email</td>
      <td></td>
    </tr>
  </thead>
  <tbody>
      <?php 
      $cursor=$collection->find (); 
      foreach ( $cursor as $document ) {
      ?>
<form action="" method="post">
      <tr>
        <td class='First_Name'>
          <?php echo $document [ "First_Name"]; ?>
        </td>
        <td class='Last_Name'>
          <?php echo $document [ "Last_Name"]; ?>
        </td>
        <td class='Email'>
          <?php echo $document [ "Email"]; ?>
        </td>
        <td>
          <input type="hidden" name=hidden value='<?php echo $document ["First_Name"]; ?>'>
          <input type="submit" value="Delete" name="deleteUser">
        </td>
      </tr>
</form>
      <?php }?>
  </tbody>
</table>

另请注意,通过名字删除用户对我来说是危险的。我会被idemail删除。

当前脚本的功能示例,因此您拥有abc123.php并以GET ?a=1&a=2&a=3&a=4&a=5提交给1。您不会获得2345print_r($_GET);,因为它们都具有相同的名称。每次迭代都会覆盖前一次,因此如果Array ( [a] => 5 )运行HTTP Status 400 - Required Integer parameter 'id' is not present ,则会输出。{/ p>