Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / mysql

[PHP从小白到大牛]-027 PHP-商城项目(三)

作者:刺眼的男ren   发布日期:2024-12-06   浏览:257

在上一篇文章中,我们已经完成了商城项目的商品展示和商品详情页的功能。接下来,我们将继续完善商城项目的购物车和订单功能。

  1. 购物车功能 购物车是一个非常重要的功能,它可以记录用户选择的商品和数量,并在结算时生成订单。首先,我们需要创建一个购物车页面,用于展示用户已选购的商品列表。在购物车页面,用户可以修改商品的数量、删除商品或者继续购物。

首先,我们需要创建一个购物车表(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>';

在购物车页面中,我们使用了一个循环来遍历购物车中的商品列表,并展示商品的名称、价格和数量。用户可以通过输入框来修改商品的数量,通过删除按钮来删除商品。结算按钮将用户跳转到结算页面。

  1. 订单功能 结算页面用于生成订单,用户在结算页面可以选择收货地址、支付方式等信息。在结算页面,我们需要展示用户的购物车商品列表,并提供选择收货地址和支付方式的选项。

首先,我们需要创建一个订单表(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);

至此,我们已经完成了商城项目的购物车和订单功能。用户可以通过购物车页面来查看已选购的商品和修改商品数量,通过结算页面来生成订单并选择收货地址和支付方式。

在下一篇文章中,我们将继续完善商城项目的订单管理和用户中心功能。

上一篇:如何使用Docker部署PHP开发环境

下一篇:php自动加上序号

大家都在看

php下订单代码(php订单系统)

php如何写回调函数

微信个人收款 php(微信个人收款码)

linux如何开发php(linux创建p

php数组传变量吗(php数组转换成字符串

php延长生命周期(php变量生命周期)

php 截取 网页内容(php 截断)

php拆分excel表格(php分割数组)

php 发送qq邮件(php收发邮件)

php按键按下事件(php单击按钮的几种实

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站