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

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

作者:浪推晚风   发布日期:2024-12-05   浏览:814

在上一篇文章中,我们已经完成了商城项目的商品详情页面的开发。接下来,我们将继续实现商城项目的购物车功能。

首先,我们需要创建一个购物车页面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类中,我们需要实现以下几个方法:

  1. addToCart($user_id, $product_id, $quantity):将商品添加到购物车中。如果购物车中已经存在该商品,则更新商品数量;否则,插入一条新的购物车记录。
  2. updateCart($user_id, $product_id, $quantity):更新购物车中商品的数量。
  3. removeCartItem($user_id, $product_id):从购物车中删除指定商品。
  4. getCartItems($user_id):获取指定用户的购物车商品列表。

下面是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;
?>

至此,我们已经完成了商城项目的购物车功能的开发。用户可以在商品详情页面点击“加入购物车”按钮将商品添加到购物车中,然后在购物车页面可以查看已经添加到购物车中的商品,并提供一些操作,比如修改商品数量、删除商品等。

在下一篇文章中,我们将继续实现商城项目的订单功能。敬请期待!

上一篇:[PHP从小白到大牛]-034 PHP-面向对象(二)

下一篇:PHP 7 中对 Error 的处理

大家都在看

php中$alias

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

php如何写回调函数

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

linux如何开发php(linux创建p

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

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

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

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

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

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

Laravel 中文站