当前位置:首页 > 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;
}

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

相关文章

vue 实现收藏功能

vue 实现收藏功能

实现收藏功能的基本思路 在Vue中实现收藏功能通常涉及前端交互与后端数据存储的结合。核心逻辑包括:用户点击收藏按钮时切换状态,并通过API将状态同步到后端数据库。 前端组件实现 创建收藏按钮组件,使…

vue实现审核功能

vue实现审核功能

实现审核功能的基本思路 审核功能通常涉及状态管理、权限控制和操作记录。Vue中可以通过组件化设计、状态管理库(如Vuex或Pinia)和后端API配合实现。 审核状态管理 使用Vuex或Pinia存…

php实现linux关机重启功能

php实现linux关机重启功能

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

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

vue实现收藏样式

vue实现收藏样式

实现收藏功能的基本思路 在Vue中实现收藏样式通常需要结合点击事件和数据绑定。通过维护一个布尔值状态(如isFavorited)来控制样式的切换,同时可能涉及后端API的交互。 基础实现代码示例 &…

vue实现复选功能

vue实现复选功能

Vue 实现复选功能 基础实现 使用 v-model 绑定到数组实现多选功能。当复选框被选中时,其 value 会被添加到数组中;取消选中时,会从数组中移除。 <template>…