【问题标题】:Form not submitting correct value from datatable表单未从数据表中提交正确的值
【发布时间】:2015-11-24 19:20:37
【问题描述】:

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

(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 代码。 当我单击删除时,它总是发送最后一行的名字。

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

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

【问题讨论】:

  • 您确定您的表单中有 name=hidden 而不是 name="hidden" 吗?如果您的回答是肯定的,那么将 name=hidden 更改为 name="hidden"
  • 对答案有疑问或问题?
  • 尝试将 name=hidden 更改为 name="hidden"。没有运气:(

标签: php html forms post datatable


【解决方案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&amp;a=2&amp;a=3&amp;a=4&amp;a=5 提交给它。您不会得到12345,因为它们都具有相同的名称。每次迭代都会覆盖上一次迭代,因此如果运行 print_r($_GET);,则会输出 Array ( [a] =&gt; 5 )

【讨论】:

  • 感谢@chris85 的建议。我以前试过这个,如果我将表单标签放在 标签之间,表单不会被提交。有什么想法吗?另外,我不是根据名字删除用户,这只是一个例子。
  • 如果这解决了您的问题,请务必接受,meta.stackexchange.com/questions/5234/…
猜你喜欢
  • 1970-01-01
  • 2016-05-03
  • 2019-08-31
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
相关资源
最近更新 更多