在上一篇文章中,我们已经完成了商城项目的商品详情页面的开发。接下来,我们将继续实现商城项目的购物车功能。
首先,我们需要创建一个购物车页面cart.php,用于展示用户的购物车商品列表。在这个页面中,我们将展示用户已经添加到购物车中的商品,并提供一些操作,比如修改商品数量、删除商品等。
首先,我们需要创建一个购物车表cart,用于存储用户的购物车信息。这个表的结构如下:
CREATE TABLE `cart` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
`quantity` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接下来,我们需要创建一个Cart类,用于处理购物车相关的操作。在Cart类中,我们需要实现以下几个方法:
下面是Cart类的代码实现:
class Cart {
private $db;
public function __construct($db) {
$this->db = $db;
}
public function addToCart($user_id, $product_id, $quantity) {
$stmt = $this->db->prepare("SELECT * FROM cart WHERE user_id = ? AND product_id = ?");
$stmt->execute([$user_id, $product_id]);
$cartItem = $stmt->fetch(PDO::FETCH_ASSOC);
if ($cartItem) {
$stmt = $this->db->prepare("UPDATE cart SET quantity = ? WHERE id = ?");
$stmt->execute([$quantity, $cartItem['id']]);
} else {
$stmt = $this->db->prepare("INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $product_id, $quantity]);
}
}
public function updateCart($user_id, $product_id, $quantity) {
$stmt = $this->db->prepare("UPDATE cart SET quantity = ? WHERE user_id = ? AND product_id = ?");
$stmt->execute([$quantity, $user_id, $product_id]);
}
public function removeCartItem($user_id, $product_id) {
$stmt = $this->db->prepare("DELETE FROM cart WHERE user_id = ? AND product_id = ?");
$stmt->execute([$user_id, $product_id]);
}
public function getCartItems($user_id) {
$stmt = $this->db->prepare("SELECT cart.*, products.name, products.price FROM cart JOIN products ON cart.product_id = products.id WHERE cart.user_id = ?");
$stmt->execute([$user_id]);
$cartItems = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $cartItems;
}
}
接下来,我们需要在cart.php页面中使用Cart类来展示用户的购物车商品列表。首先,我们需要获取当前登录用户的ID,然后调用Cart类的getCartItems方法来获取购物车商品列表。最后,我们使用HTML和PHP代码来展示购物车商品列表,并提供一些操作。
下面是cart.php页面的代码实现:
<?php
require_once 'config.php';
require_once 'Cart.php';
// 获取当前登录用户的ID
$user_id = $_SESSION['user_id'];
// 创建Cart对象
$cart = new Cart($db);
// 获取购物车商品列表
$cartItems = $cart->getCartItems($user_id);
?>
<!DOCTYPE html>
<html>
<head>
<title>购物车</title>
</head>
<body>
<h1>购物车</h1>
<table>
<thead>
<tr>
<th>商品名称</th>
<th>价格</th>
<th>数量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php foreach ($cartItems as $cartItem): ?>
<tr>
<td><?php echo $cartItem['name']; ?></td>
<td><?php echo $cartItem['price']; ?></td>
<td>
<form action="update_cart.php" method="post">
<input type="hidden" name="product_id" value="<?php echo $cartItem['product_id']; ?>">
<input type="number" name="quantity" value="<?php echo $cartItem['quantity']; ?>">
<input type="submit" value="更新数量">
</form>
</td>
<td>
<form action="remove_cart_item.php" method="post">
<input type="hidden" name="product_id" value="<?php echo $cartItem['product_id']; ?>">
<input type="submit" value="删除">
</form>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</body>
</html>
在上面的代码中,我们使用foreach循环来遍历购物车商品列表,并使用HTML和PHP代码展示每个商品的信息。对于每个商品,我们提供了一个表单来修改商品数量,并提供一个按钮来删除商品。
最后,我们需要创建两个处理购物车操作的页面update_cart.php和remove_cart_item.php。在这两个页面中,我们需要使用Cart类来更新购物车商品的数量和删除购物车商品。
下面是update_cart.php页面的代码实现:
<?php
require_once 'config.php';
require_once 'Cart.php';
// 获取当前登录用户的ID
$user_id = $_SESSION['user_id'];
// 获取表单数据
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'];
// 创建Cart对象
$cart = new Cart($db);
// 更新购物车商品数量
$cart->updateCart($user_id, $product_id, $quantity);
// 跳转回购物车页面
header('Location: cart.php');
exit;
?>
下面是remove_cart_item.php页面的代码实现:
<?php
require_once 'config.php';
require_once 'Cart.php';
// 获取当前登录用户的ID
$user_id = $_SESSION['user_id'];
// 获取表单数据
$product_id = $_POST['product_id'];
// 创建Cart对象
$cart = new Cart($db);
// 从购物车中删除指定商品
$cart->removeCartItem($user_id, $product_id);
// 跳转回购物车页面
header('Location: cart.php');
exit;
?>
至此,我们已经完成了商城项目的购物车功能的开发。用户可以在商品详情页面点击“加入购物车”按钮将商品添加到购物车中,然后在购物车页面可以查看已经添加到购物车中的商品,并提供一些操作,比如修改商品数量、删除商品等。
在下一篇文章中,我们将继续实现商城项目的订单功能。敬请期待!
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站