当前位置:首页 > PHP

php购物车功能实现

2026-04-02 23:02:48PHP

数据库设计

创建必要的数据库表存储商品和购物车信息。通常需要products表和cart表:

-- 商品表
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10,2),
    description TEXT,
    image VARCHAR(100)
);

-- 购物车表(用户登录场景)
CREATE TABLE cart (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    product_id INT,
    quantity INT,
    FOREIGN KEY (product_id) REFERENCES products(id)
);

会话存储实现

对于未登录用户,使用PHP的$_SESSION存储购物车数据:

// 初始化购物车
if (!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = array();
}

// 添加商品到购物车
function addToCart($productId, $quantity = 1) {
    if (isset($_SESSION['cart'][$productId])) {
        $_SESSION['cart'][$productId] += $quantity;
    } else {
        $_SESSION['cart'][$productId] = $quantity;
    }
}

// 从购物车移除商品
function removeFromCart($productId) {
    unset($_SESSION['cart'][$productId]);
}

数据库存储实现

对于已登录用户,购物车数据存入数据库:

php购物车功能实现

// 添加商品到数据库购物车
function addToDBCart($userId, $productId, $quantity = 1) {
    $existing = $db->query("SELECT * FROM cart WHERE user_id = $userId AND product_id = $productId");

    if ($existing->num_rows > 0) {
        $db->query("UPDATE cart SET quantity = quantity + $quantity WHERE user_id = $userId AND product_id = $productId");
    } else {
        $db->query("INSERT INTO cart (user_id, product_id, quantity) VALUES ($userId, $productId, $quantity)");
    }
}

购物车页面显示

展示购物车中的商品列表和总价:

function displayCart() {
    $total = 0;

    if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
        foreach ($_SESSION['cart'] as $productId => $quantity) {
            $product = $db->query("SELECT * FROM products WHERE id = $productId")->fetch_assoc();
            $subtotal = $product['price'] * $quantity;
            $total += $subtotal;

            echo "<div class='cart-item'>
                <h3>{$product['name']}</h3>
                <p>Price: \${$product['price']}</p>
                <p>Quantity: $quantity</p>
                <p>Subtotal: \$$subtotal</p>
                <a href='remove.php?id=$productId'>Remove</a>
            </div>";
        }
        echo "<h3>Total: \$$total</h3>";
    } else {
        echo "Your cart is empty";
    }
}

购物车功能扩展

实现数量修改和清空购物车功能:

php购物车功能实现

// 更新商品数量
function updateQuantity($productId, $newQuantity) {
    if ($newQuantity <= 0) {
        removeFromCart($productId);
    } else {
        $_SESSION['cart'][$productId] = $newQuantity;
    }
}

// 清空购物车
function emptyCart() {
    $_SESSION['cart'] = array();
}

安全注意事项

处理用户输入时进行验证和过滤:

// 安全添加商品
function safeAddToCart() {
    $productId = filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT);
    $quantity = filter_input(INPUT_GET, 'quantity', FILTER_VALIDATE_INT);

    if ($productId && $quantity) {
        addToCart($productId, $quantity);
    }
}

AJAX实现

使用jQuery实现无刷新购物车操作:

$('.add-to-cart').click(function() {
    var productId = $(this).data('id');
    $.post('add_to_cart.php', {product_id: productId}, function(data) {
        $('#cart-count').text(data.cartCount);
    }, 'json');
});

标签: 购物车功能
分享给朋友:

相关文章

vue实现审核功能

vue实现审核功能

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

uniapp实现选项卡功能

uniapp实现选项卡功能

实现选项卡功能的基本方法 在uniapp中实现选项卡功能通常需要使用uni-segmented-control组件或自定义样式结合swiper组件。以下是两种常见实现方式: 使用uni-se…

vue实现论坛功能

vue实现论坛功能

实现论坛功能的核心模块 论坛功能通常包含用户发帖、回帖、分类浏览、搜索等核心模块。Vue.js 作为前端框架,需配合后端 API 实现数据交互。 基础项目结构搭建 使用 Vue CLI 或 Vite…

php session实现购物车

php session实现购物车

PHP Session 实现购物车 初始化 Session 确保在使用 Session 前调用 session_start() 函数。通常放在 PHP 文件的最顶部。 <?php sessio…

vue实现插件功能

vue实现插件功能

Vue 插件实现方法 安装与注册插件 在 Vue 项目中,插件通常以独立模块形式存在。通过 Vue.use() 方法注册插件,该方法会自动调用插件的 install 函数。 // 引入插件 imp…

vue实现修改功能

vue实现修改功能

Vue 实现修改功能的方法 数据绑定与表单处理 使用v-model实现双向数据绑定,快速获取表单输入值。适用于表单类修改场景: <template> <input v-mode…