当前位置:首页 > PHP

php 实现购物车

2026-01-13 13:34:26PHP

PHP 实现购物车功能

购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式:

使用 Session 存储购物车数据

Session 是一种简单的临时存储方式,适合小型网站或不需要持久化购物车数据的场景。

// 启动 Session
session_start();

// 添加商品到购物车
if (isset($_POST['add_to_cart'])) {
    $product_id = $_POST['product_id'];
    $quantity = $_POST['quantity'];

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

    // 检查商品是否已存在
    if (isset($_SESSION['cart'][$product_id])) {
        $_SESSION['cart'][$product_id] += $quantity;
    } else {
        $_SESSION['cart'][$product_id] = $quantity;
    }
}

// 从购物车移除商品
if (isset($_GET['remove'])) {
    $product_id = $_GET['remove'];
    unset($_SESSION['cart'][$product_id]);
}

// 更新购物车数量
if (isset($_POST['update_cart'])) {
    foreach ($_POST['quantity'] as $product_id => $quantity) {
        if ($quantity > 0) {
            $_SESSION['cart'][$product_id] = $quantity;
        } else {
            unset($_SESSION['cart'][$product_id]);
        }
    }
}

使用数据库存储购物车数据

对于需要持久化或用户登录后才能使用的购物车,可以将数据存储在数据库中。

// 数据库连接
$db = new PDO('mysql:host=localhost;dbname=shop', 'username', 'password');

// 添加商品到购物车
if (isset($_POST['add_to_cart'])) {
    $user_id = $_SESSION['user_id'];
    $product_id = $_POST['product_id'];
    $quantity = $_POST['quantity'];

    // 检查是否已存在
    $stmt = $db->prepare("SELECT * FROM cart WHERE user_id = ? AND product_id = ?");
    $stmt->execute([$user_id, $product_id]);
    $item = $stmt->fetch();

    if ($item) {
        // 更新数量
        $new_quantity = $item['quantity'] + $quantity;
        $stmt = $db->prepare("UPDATE cart SET quantity = ? WHERE id = ?");
        $stmt->execute([$new_quantity, $item['id']]);
    } else {
        // 新增记录
        $stmt = $db->prepare("INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)");
        $stmt->execute([$user_id, $product_id, $quantity]);
    }
}

// 获取购物车内容
function getCartItems($user_id) {
    global $db;
    $stmt = $db->prepare("
        SELECT p.*, c.quantity 
        FROM cart c 
        JOIN products p ON c.product_id = p.id 
        WHERE c.user_id = ?
    ");
    $stmt->execute([$user_id]);
    return $stmt->fetchAll();
}

购物车页面显示

// 显示购物车内容
$cart_items = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();

foreach ($cart_items as $product_id => $quantity) {
    // 获取商品信息
    $product = getProductById($product_id);

    echo '<div class="cart-item">';
    echo '<h4>' . $product['name'] . '</h4>';
    echo '<p>价格: $' . $product['price'] . '</p>';
    echo '<form method="post">';
    echo '<input type="number" name="quantity['.$product_id.']" value="'.$quantity.'">';
    echo '<button type="submit" name="update_cart">更新</button>';
    echo '<a href="?remove='.$product_id.'">移除</a>';
    echo '</form>';
    echo '</div>';
}

// 计算总价
function calculateTotal($cart_items) {
    $total = 0;
    foreach ($cart_items as $product_id => $quantity) {
        $product = getProductById($product_id);
        $total += $product['price'] * $quantity;
    }
    return $total;
}

数据库表结构

如果使用数据库存储购物车数据,需要创建以下表:

CREATE TABLE cart (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (product_id) REFERENCES products(id)
);

安全注意事项

  1. 对用户输入进行验证和过滤
  2. 使用预处理语句防止SQL注入
  3. 对敏感操作进行CSRF保护
  4. 对数量进行限制防止负数或过大值

以上代码提供了购物车的基本功能实现,可以根据实际需求进行扩展和优化。

php 实现购物车

标签: 购物车php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

用vue实现简易购物车

用vue实现简易购物车

实现简易购物车的Vue代码 以下是一个基于Vue 3的简易购物车实现方案,包含商品展示、添加删除、价格计算等核心功能。 项目结构 src/ ├── components/ │ ├── CartI…

php实现打印功能

php实现打印功能

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

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开:…