所以我一直在查看一些有关使用多个复选框作为输入的资源。我正在构建一个 PM 系统,希望用户能够勾选任何消息,然后通过按钮将其删除。
问题是每当我检查任何消息时:
答:您必须单击删除按钮两次。
B:只有列表中的第一条消息才会被删除。
按钮组:
<form method="post"
<div class="button-group">
<button type="submit" name="delete" class="delete button inbox">Delete</button>
<button type="submit" name="mark" class="mark button inbox">Mark as Read</button>
</div>
稍后表行:
<?php
while ($row = mysqli_fetch_array($result)){?>
<tr>
<td><?php echo $row['PM_User1ID'];?></td>
<td><?php echo $row['PM_User2ID'];?></td>
<td><?php echo $row['PM_Subject'];?></td>
<td><?php echo $row['PM_Timestamp'];?></td>
<td>
<label>
<input type="checkbox" name="check_list[]" value="<?php echo $row['PMID'];?>"><?php echo $row['PMID'];?>
</label>
</form>
</td>
<?php echo '<td><a name="'.$row['PMID'].'"href = "?link='.$row['PMID'].'">Reply</a></td>'; ?>
</tr>
<?php } ?>
最后是提交帖子:
<?php
if (isset ($_POST['delete'])){
if(!empty($_POST['check_list'])){
foreach($_POST['check_list'] as $selected){
$pmDelete = "DELETE FROM pm WHERE PMID = $selected";
$deletePM = $con->query($pmDelete);
}
}
}
?>
最佳答案
事实证明(通过与评论中的OP交谈),是 empty()
复选框的函数需要是 isset()
.
然后需要( header )重定向(成功删除后)以显示(新)结果。
引用文献:
您还应该考虑使用准备好的语句:
- https://en.wikipedia.org/wiki/Prepared_statement
为了帮助防止 SQL 注入(inject):
脚注:
正如我也提到的,<form>
不能是 <table>
的子项和失踪的>
对于 <form method="post"
这会造成严重破坏。
关于php - 如何使用复选框删除多个条目? (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621500/