看起来很简单但可能是我在这里忽略了一些东西。
(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。
答案 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>
另请注意,通过名字删除用户对我来说是危险的。我会被id
或email
删除。
当前脚本的功能示例,因此您拥有abc123.php
并以GET
?a=1&a=2&a=3&a=4&a=5
提交给1
。您不会获得2
,3
,4
,5
和print_r($_GET);
,因为它们都具有相同的名称。每次迭代都会覆盖前一次,因此如果Array ( [a] => 5 )
运行HTTP Status 400 - Required Integer parameter 'id' is not present
,则会输出。{/ p>