当前位置:首页 > PHP

php收藏功能实现

2026-02-13 19:06:42PHP

数据库设计

创建收藏表favorites,包含用户ID、收藏内容ID和收藏时间字段。示例SQL:

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)
);

添加收藏功能

创建收藏接口,处理用户提交的收藏请求。示例PHP代码:

php收藏功能实现

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]);
}

检查收藏状态

在页面显示时检查当前用户是否已收藏。示例代码:

php收藏功能实现

function isFavorited($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;
}

前端交互实现

使用AJAX实现无刷新收藏操作。示例jQuery代码:

$('.favorite-btn').click(function() {
    var 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');
        }
    });
});

性能优化

对频繁访问的收藏数据使用缓存:

function getUserFavorites($userId) {
    $cacheKey = "user_favorites_{$userId}";
    if($cached = apc_fetch($cacheKey)) {
        return $cached;
    }

    $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $stmt = $pdo->prepare("SELECT item_id FROM favorites WHERE user_id = ?");
    $stmt->execute([$userId]);
    $result = $stmt->fetchAll(PDO::FETCH_COLUMN);

    apc_store($cacheKey, $result, 3600);
    return $result;
}

标签: 功能收藏
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaS…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

vue实现收藏

vue实现收藏

实现收藏功能的步骤 在Vue中实现收藏功能通常需要结合前端交互和后端数据存储。以下是常见的实现方法: 前端交互实现 创建一个响应式的isFavorited状态来跟踪收藏状态: data() {…

php实现linux关机重启功能

php实现linux关机重启功能

通过PHP执行Linux关机或重启命令 PHP可以通过exec()、shell_exec()或system()等函数调用系统命令实现关机或重启功能,但需注意权限问题。 使用exec函数执行命令 /…

原生实现vue功能

原生实现vue功能

原生 JavaScript 实现 Vue 核心功能 使用原生 JavaScript 模拟 Vue 的核心功能(如数据绑定、虚拟 DOM、响应式更新等),可以通过以下方式实现: 数据响应式系统 通过…

vue实现功能插件

vue实现功能插件

Vue 功能插件实现方法 插件基本结构 Vue 插件通常需要暴露一个 install 方法,该方法接收 Vue 构造函数作为参数。基本结构如下: const MyPlugin = { inst…