php实现购物车
使用PHP实现购物车功能
数据库设计
创建一个数据库表存储购物车信息,例如:
CREATE TABLE cart (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
添加商品到购物车
使用PHP处理表单提交,将商品添加到购物车:
<?php
session_start();
$productId = $_POST['product_id'];
$quantity = $_POST['quantity'];
$userId = $_SESSION['user_id'];
$sql = "INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$userId, $productId, $quantity]);
?>
显示购物车内容
查询数据库获取当前用户的购物车商品:

<?php
session_start();
$userId = $_SESSION['user_id'];
$sql = "SELECT p.name, p.price, c.quantity
FROM cart c
JOIN products p ON c.product_id = p.id
WHERE c.user_id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$userId]);
$cartItems = $stmt->fetchAll();
?>
<ul>
<?php foreach ($cartItems as $item): ?>
<li><?= $item['name'] ?> - 价格: <?= $item['price'] ?> - 数量: <?= $item['quantity'] ?></li>
<?php endforeach; ?>
</ul>
更新购物车商品数量
处理修改商品数量的请求:
<?php
session_start();
$cartId = $_POST['cart_id'];
$newQuantity = $_POST['quantity'];
$sql = "UPDATE cart SET quantity = ? WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$newQuantity, $cartId]);
?>
从购物车移除商品
处理删除商品的请求:

<?php
session_start();
$cartId = $_POST['cart_id'];
$sql = "DELETE FROM cart WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$cartId]);
?>
计算购物车总价
在显示购物车时计算总价格:
<?php
$total = 0;
foreach ($cartItems as $item) {
$total += $item['price'] * $item['quantity'];
}
?>
<p>总价: <?= $total ?></p>
使用Session实现临时购物车
对于未登录用户,可以使用Session存储购物车数据:
<?php
session_start();
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = [];
}
// 添加商品
$_SESSION['cart'][$productId] = [
'quantity' => $quantity,
'name' => $productName,
'price' => $productPrice
];
?>
清空购物车
提供清空购物车的功能:
<?php
session_start();
$userId = $_SESSION['user_id'];
$sql = "DELETE FROM cart WHERE user_id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$userId]);
?>






