HTML隐藏输入不是工作表中的表单

时间:2016-07-23 10:27:50

标签: php html mysql

我需要回显$_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'];
}

?>

3 个答案:

答案 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>