我需要回显$_POST['selected_for_del']
,但问题是我没有得到正确的id,它放在html隐藏输入中。我究竟做错了什么?隐藏输入中有什么问题吗?
<?php
$q = mysqli_query($conn,"SELECT * FROM news_post LIMIT 30");
echo '
<form action="" method="post">
<table style="width:100%">
<tr>
<th>POST ID</th>
<th>Post Title</th>
<th>Menu Name</th>
<th>Is it event?</th>
<th>Is it top?</th>
<th>Is it roling?</th>
<th>Delete Post</th>
</tr>
';
while ($row = mysqli_fetch_array($q)) {
$post_id = $row['post_id'];
$post_title = $row['post_title'];
//$post_text = $row['post_text'];
$menu_name = $row['menu_name'];
$is_event = $row['is_event'];
$is_roling = $row['is_roling'];
$is_top = $row['is_top'];
$img_name = $row['img_name'];
//return_yes_no_on_true_false($is_event);
echo '
<tr>
<td>'.$post_id.'</td>
<td><a href="post_id='.$post_id.'">'.$post_title.'</a></td>
<td>'.$menu_name.'</td>
<td>'.return_yes_no_on_true_false($is_event).'</td>
<td>'.return_yes_no_on_true_false($is_top).'</td>
<td>'.return_yes_no_on_true_false($is_roling).'</td>
<td><input type="hidden" name="selected_for_del" value="'.$post_id.'"></td>
<td><br><input type="submit" name="submit_delete" value="Delete it"><br></td>
</tr>
';
}
echo '</table></form>';
if (isset($_POST['submit_delete'])) {
echo $_POST['selected_for_del'];
}
?>
答案 0 :(得分:2)
您只有一个表单,因此当您提交表单时,您将提交所有隐藏的输入。
由于您想知道与单击的提交按钮关联的输入,并且由于同一行上没有其他表单控件,因此您有两个选项:
忘记隐藏的输入
将数据存储在提交按钮上。
<button name="selected_for_del" value="<?=htmlspecialchars($post_id);?>"> Delete it</button>
将表单放入单元格
不要在整个表格周围放置表格。在包含按钮的表格单元格中,在每个提交按钮周围放置一个单独的表单。将隐藏的输入移动到该单元格中。
<td>
<form method="post">
<input type="hidden" name="selected_for_del" value="<?=htmlspecialchars($post_id);?>">
<input type="submit" name="submit_delete" value="Delete it">
</form>
</td>
答案 1 :(得分:-1)
尝试将表单放在循环中...当您将其打印出来时,您有许多隐藏的输入具有相同的名称和不同的值。
答案 2 :(得分:-1)
你的问题是表单在你的循环之外,如果你的隐藏输入对于所有行都是相同的,那么结果就是你总是会删除你的最后一行。
它不是最佳解决方案,但我建议如下:
1)删除隐藏的输入。
2)替换:
<input type="submit" name="submit_delete" value="Delete it">
与
<button type="submit" name="selected_for_del" value=".$post_id.">'Delete it'</button>