php收藏功能实现
实现PHP收藏功能
数据库设计
创建收藏表需要包含用户ID和收藏项ID等字段
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,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (item_id) REFERENCES items(id),
UNIQUE KEY (user_id, item_id)
);
添加收藏功能
处理用户添加收藏的请求

function addFavorite($userId, $itemId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("INSERT INTO favorites (user_id, item_id) VALUES (?, ?)");
return $stmt->execute([$userId, $itemId]);
}
移除收藏功能
处理用户取消收藏的请求
function removeFavorite($userId, $itemId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("DELETE FROM favorites WHERE user_id = ? AND item_id = ?");
return $stmt->execute([$userId, $itemId]);
}
检查收藏状态
验证用户是否已收藏某项目

function isFavorite($userId, $itemId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("SELECT COUNT(*) FROM favorites WHERE user_id = ? AND item_id = ?");
$stmt->execute([$userId, $itemId]);
return $stmt->fetchColumn() > 0;
}
获取用户收藏列表
显示用户所有收藏项目
function getUserFavorites($userId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("SELECT items.* FROM items JOIN favorites ON items.id = favorites.item_id WHERE favorites.user_id = ?");
$stmt->execute([$userId]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
前端交互实现
使用AJAX实现无刷新收藏操作
$('.favorite-btn').click(function() {
const itemId = $(this).data('item-id');
$.post('favorite.php', {action: 'toggle', item_id: itemId}, function(response) {
if(response.status === 'added') {
$(this).addClass('active');
} else {
$(this).removeClass('active');
}
});
});






