php - 使用复选框、PHP 和 MySQL 删除多行

标签 php mysql drop-down-menu sql-delete

如标题所示,我想从我的数据库中删除多行。为实现这一点,我有两个文件,一个前端文件生成一个表格,显示用户可以删除的文件,这些文件是使用复选框选择的。

后端文件是处理选中的checkbox,并使用SQL语句删除选中的文件。

我遇到的问题是将所选文件的 ID 从前端传递到后端。两个文件的代码如下:

前端

//Build Table Query
$query="SELECT * FROM documents";
$result= mysqli_query($con, $query) or die("Invalid query");

$count = mysqli_affected_rows($con); 

?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="deletefilesback.php">
<table width="800" border="0" cellpadding="3" cellspacing="2" bgcolor="#CCCCCC">
<tr>
<td colspan="5" bgcolor="#FFFFFF" align="center"><strong>Delete Multiple         Files</strong></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Title</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Description</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>File Location</strong></td>
</tr>
<?php
while($row = mysqli_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox"  id="checkbox[]" value="<?php echo $rows['id']; ?>"></td>
<td bgcolor="#FFFFFF"><?php echo $row['id']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row['title']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row['description']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row['doc_link']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit"   id="delete" value="Delete Files"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>

后端

$delete = $_POST['checkbox'];

//Then do what you want with the selected items://
foreach ($delete as $id) {

$query="DELETE FROM documents WHERE id = '".$id."'";
$result= mysqli_query($con, $query) or die("Invalid query");

}
//Show that the items have been successfully removed.//
if (mysqli_affected_rows($con) > 0) {
echo '<p>The selected items have been successfully deleted.</p>';
} else {
echo '<p>An error has occurred while processing your request</p>';
}
?>

请注意,一旦这一切正常,我将使用取消链接功能使用前端表的 doc_link 部分删除服务器上的文件。 谢谢

最佳答案

在html页面中这样做

<input name="checkbox[<?php echo $row['id']?>]"

在后端做这样的

foreach ($delete as $id => $val) {
    if($val=='checked'){
        $query="DELETE FROM documents WHERE id = '".$id."'";
        $result= mysqli_query($con, $query) or die("Invalid query");
    }
}

关于php - 使用复选框、PHP 和 MySQL 删除多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145717/

相关文章:

php - Shell:SVN 状态管道到 php 以检查语法

php - 用于 PHP session 的 mySQL 和 memcached?

Java,使用 rs2xml 填充 jTable 时将 jTable 中的 boolean 列更改为复选框

mysql - 将 var char 值 '10, 11, 12, 60, 61, 111, 143, 144' 转换为数据类型 int 时转换失败

javascript - mouseover 和 mouseout 事件触发 child

php - 统一排列/分布数组项

php - 选择缺少最后一天的两个日期之间

javascript - jQuery 下拉菜单。页面标记无法正常工作 - 或者我希望它如何工作

css - 可访问的 CSS 下拉菜单

php - 将 XMLHttpRequest.responseText 保存在变量中