表单未从数据表提交正确的值

Form not submitting correct value from 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>

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

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

仅供参考:我已经为 table 启用了 DataTable。

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

<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 提交给它。您不会得到 12345,因为它们都具有相同的名称。每次迭代都会覆盖之前的迭代,因此如果 print_r($_GET); 是 运行 Array ( [a] => 5 ) 将被输出。