在上一篇文章中,我们已经完成了商城项目的商品展示和商品详情页的功能。接下来,我们将继续完善商城项目的购物车和订单功能。
首先,我们需要创建一个购物车表(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;
在商品详情页中,我们需要添加一个"加入购物车"的按钮,用户点击该按钮后,将商品添加到购物车中。我们可以通过以下代码实现:
// 获取用户ID和商品ID
$user_id = $_SESSION['user_id'];
$product_id = $_GET['id'];
// 检查购物车中是否已存在该商品
$query = "SELECT * FROM cart WHERE user_id = $user_id AND product_id = $product_id";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
// 更新购物车中该商品的数量
$row = mysqli_fetch_assoc($result);
$quantity = $row['quantity'] + 1;
$query = "UPDATE cart SET quantity = $quantity WHERE user_id = $user_id AND product_id = $product_id";
mysqli_query($conn, $query);
} else {
// 添加商品到购物车
$query = "INSERT INTO cart (user_id, product_id, quantity) VALUES ($user_id, $product_id, 1)";
mysqli_query($conn, $query);
}
在购物车页面中,我们需要查询购物车表中的数据,并展示给用户。用户可以修改商品的数量、删除商品或者继续购物。以下是购物车页面的代码示例:
// 查询购物车中的商品
$query = "SELECT cart.id, cart.quantity, products.name, products.price FROM cart LEFT JOIN products ON cart.product_id = products.id WHERE cart.user_id = $user_id";
$result = mysqli_query($conn, $query);
// 展示购物车中的商品列表
while ($row = mysqli_fetch_assoc($result)) {
echo '<tr>';
echo '<td>'.$row['name'].'</td>';
echo '<td>'.$row['price'].'</td>';
echo '<td><input type="number" value="'.$row['quantity'].'" min="1"></td>';
echo '<td><a href="delete_cart.php?id='.$row['id'].'">删除</a></td>';
echo '</tr>';
}
// 结算按钮
echo '<tr>';
echo '<td colspan="4" align="right">';
echo '<a href="checkout.php">结算</a>';
echo '</td>';
echo '</tr>';
在购物车页面中,我们使用了一个循环来遍历购物车中的商品列表,并展示商品的名称、价格和数量。用户可以通过输入框来修改商品的数量,通过删除按钮来删除商品。结算按钮将用户跳转到结算页面。
首先,我们需要创建一个订单表(orders),用于存储用户的订单数据。订单表的结构如下:
CREATE TABLE `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`address` varchar(255) NOT NULL,
`payment_method` varchar(255) NOT NULL,
`status` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在结算页面,我们需要查询购物车表中的数据,并展示给用户。用户可以选择收货地址和支付方式,并点击"提交订单"按钮生成订单。以下是结算页面的代码示例:
// 查询购物车中的商品
$query = "SELECT cart.id, cart.quantity, products.name, products.price FROM cart LEFT JOIN products ON cart.product_id = products.id WHERE cart.user_id = $user_id";
$result = mysqli_query($conn, $query);
// 展示购物车中的商品列表
while ($row = mysqli_fetch_assoc($result)) {
echo '<tr>';
echo '<td>'.$row['name'].'</td>';
echo '<td>'.$row['price'].'</td>';
echo '<td>'.$row['quantity'].'</td>';
echo '</tr>';
}
// 收货地址选择
echo '<tr>';
echo '<td>收货地址:</td>';
echo '<td>';
echo '<select name="address">';
echo '<option value="地址1">地址1</option>';
echo '<option value="地址2">地址2</option>';
echo '</select>';
echo '</td>';
echo '</tr>';
// 支付方式选择
echo '<tr>';
echo '<td>支付方式:</td>';
echo '<td>';
echo '<select name="payment_method">';
echo '<option value="支付宝">支付宝</option>';
echo '<option value="微信支付">微信支付</option>';
echo '</select>';
echo '</td>';
echo '</tr>';
// 提交订单按钮
echo '<tr>';
echo '<td colspan="3" align="right">';
echo '<input type="submit" value="提交订单">';
echo '</td>';
echo '</tr>';
在提交订单后,我们需要将订单数据插入到订单表中,并清空购物车中的商品数据。以下是提交订单的代码示例:
// 获取用户选择的收货地址和支付方式
$address = $_POST['address'];
$payment_method = $_POST['payment_method'];
// 插入订单数据
$query = "INSERT INTO orders (user_id, address, payment_method, status) VALUES ($user_id, '$address', '$payment_method', '待支付')";
mysqli_query($conn, $query);
// 清空购物车数据
$query = "DELETE FROM cart WHERE user_id = $user_id";
mysqli_query($conn, $query);
至此,我们已经完成了商城项目的购物车和订单功能。用户可以通过购物车页面来查看已选购的商品和修改商品数量,通过结算页面来生成订单并选择收货地址和支付方式。
在下一篇文章中,我们将继续完善商城项目的订单管理和用户中心功能。
下一篇:php自动加上序号
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站