php实现购物
PHP 实现购物车功能
购物车是电商网站的核心功能之一,允许用户临时存储商品并管理订单。以下是使用 PHP 实现购物车功能的几种方法:
使用 Session 存储购物车数据
PHP 的 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]);
}
使用数据库存储购物车数据

对于需要持久化存储或跨设备同步的情况,可以使用数据库:
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=shop', 'username', 'password');
// 添加商品到购物车
function addToCart($user_id, $product_id, $quantity) {
global $db;
$stmt = $db->prepare("INSERT INTO cart (user_id, product_id, quantity)
VALUES (:user_id, :product_id, :quantity)
ON DUPLICATE KEY UPDATE quantity = quantity + :quantity");
$stmt->execute([
':user_id' => $user_id,
':product_id' => $product_id,
':quantity' => $quantity
]);
}
购物车页面显示
展示购物车内容的代码示例:

session_start();
if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
echo '<h3>您的购物车</h3>';
echo '<table>';
echo '<tr><th>商品</th><th>数量</th><th>操作</th></tr>';
foreach ($_SESSION['cart'] as $product_id => $quantity) {
// 这里应该从数据库获取商品详情
echo '<tr>';
echo '<td>商品ID: ' . $product_id . '</td>';
echo '<td>' . $quantity . '</td>';
echo '<td><a href="?remove=' . $product_id . '">移除</a></td>';
echo '</tr>';
}
echo '</table>';
} else {
echo '购物车为空';
}
实现结算功能
结算功能的简单实现:
if (isset($_POST['checkout'])) {
// 验证购物车不为空
if (empty($_SESSION['cart'])) {
die('购物车为空');
}
// 创建订单
$order_id = createOrder($_SESSION['user_id'], $_SESSION['cart']);
// 清空购物车
unset($_SESSION['cart']);
// 跳转到订单确认页面
header('Location: order_confirmation.php?id=' . $order_id);
exit;
}
购物车功能扩展
- 商品库存检查:在添加商品时检查库存量
- 价格计算:根据商品数量和单价计算总价
- 优惠券应用:支持折扣码和促销活动
- 多货币支持:根据用户地区显示不同货币价格
- 购物车持久化:使用Cookie或数据库保存未登录用户的购物车
这些方法可以根据具体需求组合使用,构建完整的购物车功能。对于大型电商系统,可能需要考虑使用框架如Laravel或Symfony提供的购物车组件。






