在网站开发中,我们经常会遇到需要实现回收站功能的情况,回收站功能可以让用户在一定时间内恢复已删除的数据,提高用户体验,本文将介绍如何使用PHP实现回收站功能。
我们需要创建一个数据表来存储回收站的数据,这个数据表可以包含以下字段:id(主键)、user_id(用户ID)、item_id(被删除的数据ID)、deleted_at(删除时间),以下是创建数据表的SQL语句:
CREATE TABLEtrash(idint(11) NOT NULL AUTO_INCREMENT,user_idint(11) NOT NULL,item_idint(11) NOT NULL,deleted_atdatetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接下来,我们需要编写一个函数来处理数据的删除操作,当用户请求删除某个数据时,这个函数会将被删除的数据插入到回收站数据表中,并从原数据表中删除该数据,以下是一个简单的示例:
function deleteItem($userId, $itemId) {
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 将数据插入到回收站数据表中
$sql = "INSERT INTO trash (user_id, item_id, deleted_at) VALUES ($userId, $itemId, NOW())";
$conn->query($sql);
// 从原数据表中删除数据
$sql = "DELETE FROM items WHERE id = $itemId";
$conn->query($sql);
// 关闭数据库连接
$conn->close();
}
现在,我们可以实现一个页面来展示回收站中的数据,在这个页面中,用户可以查看、恢复或永久删除回收站中的数据,以下是一个简单的HTML和PHP代码示例:
<!DOCTYPE html>
<html>
<head>
<title>回收站</title>
</head>
<body>
<h1>回收站</h1>
<table border="1">
<tr>
<th>ID</th>
<th>用户ID</th>
<th>被删除的数据ID</th>
<th>删除时间</th>
<th>操作</th>
</tr>
<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 查询回收站数据表中的数据
$sql = "SELECT * FROM trash";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['user_id'] . "</td>";
echo "<td>" . $row['item_id'] . "</td>";
echo "<td>" . $row['deleted_at'] . "</td>";
echo "<td><a href='restore.php?id=" . $row['id'] . "'>恢复</a></td>";
echo "<td><a href='permanently_delete.php?id=" . $row['id'] . "'>永久删除</a></td>";
echo "</tr>";
}
$conn->close();
?>
</table>
</body>
</html>
我们需要实现两个函数来处理恢复和永久删除操作,这两个函数分别从回收站数据表中恢复数据到原数据表,或将回收站数据表中的数据永久删除,以下是一个简单的示例:
function restoreItem($trashId) {
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 从回收站数据表中恢复数据到原数据表
$sql = "UPDATE items SET deleted_at = NULL WHERE id = (SELECT item_id FROM trash WHERE id = $trashId)";
$conn->query($sql);
// 从回收站数据表中删除数据记录
$sql = "DELETE FROM trash WHERE id = $trashId";
$conn->query($sql);
// 关闭数据库连接
$conn->close();
}



还没有评论,来说两句吧...