php购物车实现代码
PHP 购物车实现代码
数据库设计
创建一个名为 cart 的表,用于存储购物车信息:
CREATE TABLE cart (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
product_id INT,
quantity INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
添加商品到购物车
<?php
session_start();
include 'db_connection.php'; // 数据库连接文件
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'];
$user_id = $_SESSION['user_id']; // 假设用户已登录
// 检查商品是否已存在购物车
$sql = "SELECT * FROM cart WHERE user_id = ? AND product_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ii", $user_id, $product_id);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// 更新数量
$sql = "UPDATE cart SET quantity = quantity + ? WHERE user_id = ? AND product_id = ?";
} else {
// 新增记录
$sql = "INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)";
}
$stmt = $conn->prepare($sql);
$stmt->bind_param("iii", $quantity, $user_id, $product_id);
$stmt->execute();
header("Location: cart.php");
exit();
}
?>
显示购物车内容
<?php
session_start();
include 'db_connection.php';
$user_id = $_SESSION['user_id'];
$sql = "SELECT p.id, p.name, p.price, c.quantity
FROM cart c
JOIN products p ON c.product_id = p.id
WHERE c.user_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->get_result();
$total = 0;
while ($row = $result->fetch_assoc()) {
$subtotal = $row['price'] * $row['quantity'];
$total += $subtotal;
echo "<div class='cart-item'>";
echo "<h3>{$row['name']}</h3>";
echo "<p>Price: {$row['price']}</p>";
echo "<p>Quantity: {$row['quantity']}</p>";
echo "<p>Subtotal: $subtotal</p>";
echo "<a href='remove_from_cart.php?id={$row['id']}'>Remove</a>";
echo "</div>";
}
echo "<div class='cart-total'>";
echo "<h3>Total: $total</h3>";
echo "</div>";
?>
从购物车移除商品
<?php
session_start();
include 'db_connection.php';
if (isset($_GET['id'])) {
$product_id = $_GET['id'];
$user_id = $_SESSION['user_id'];
$sql = "DELETE FROM cart WHERE user_id = ? AND product_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ii", $user_id, $product_id);
$stmt->execute();
header("Location: cart.php");
exit();
}
?>
更新购物车商品数量
<?php
session_start();
include 'db_connection.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_cart'])) {
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'];
$user_id = $_SESSION['user_id'];
$sql = "UPDATE cart SET quantity = ? WHERE user_id = ? AND product_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("iii", $quantity, $user_id, $product_id);
$stmt->execute();
header("Location: cart.php");
exit();
}
?>
注意事项
- 确保在操作购物车前验证用户登录状态
- 对用户输入进行适当的验证和过滤
- 考虑使用事务处理确保数据一致性
- 可以根据需求添加更多功能,如优惠券、运费计算等







