PHP实现收藏功能通常涉及到数据库的设计、用户交互逻辑以及后端数据处理。基本思路是用户点击收藏按钮时,后端记录用户的收藏行为,并将相关信息存储在数据库中。
favorites
),包含字段:user_id
(用户ID)、item_id
(收藏项ID)、created_at
(创建时间)等。CREATE TABLE favorites (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
item_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_user_item (user_id, item_id)
);
<?php
// 假设使用PDO连接数据库
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
// 处理收藏请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$userId = $_SESSION['user_id']; // 假设用户已经登录并保存了user_id
$itemId = $_POST['item_id'];
// 检查是否已经收藏
$stmt = $pdo->prepare("SELECT * FROM favorites WHERE user_id = ? AND item_id = ?");
$stmt->execute([$userId, $itemId]);
$favorite = $stmt->fetch();
if ($favorite) {
// 如果已经收藏,取消收藏
$pdo->prepare("DELETE FROM favorites WHERE id = ?")->execute([$favorite['id']]);
echo "取消收藏成功";
} else {
// 如果没有收藏,添加收藏
$pdo->prepare("INSERT INTO favorites (user_id, item_id) VALUES (?, ?)")->execute([$userId, $itemId]);
echo "收藏成功";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>收藏功能示例</title>
</head>
<body>
<button id="favoriteBtn" data-item-id="123">收藏</button>
<script>
document.getElementById('favoriteBtn').addEventListener('click', function() {
var itemId = this.getAttribute('data-item-id');
fetch('/favorite.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'item_id=' + itemId
}).then(response => response.text())
.then(data => alert(data));
});
</script>
</body>
</html>
UNIQUE KEY unique_user_item (user_id, item_id)
),防止重复插入。通过以上步骤和代码示例,你可以实现一个基本的收藏功能。根据具体需求,可以进一步优化和扩展功能。
领取专属 10元无门槛券
手把手带您无忧上云