php 购物车类

<?php
session_start();
class Cart
{
    public $pdo = null;

    public function __construct($config)
    {
        $host = $config['host'];
        $user = $config['user'];
        $db = $config['db'];
        $pwd = $config['pwd'];
        if (empty($_SESSION['user_id'])) {
            return show(0, '请先登录');
        }
        try {
            $this->pdo = new PDO("mysql:host=$host;dbname=$db", "$user", "$pwd", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
            $this->pdo->query("set names utf8");
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
    }

    //添加商品到购物车
    public function add_cart($productid, $num)
    {
        $sql = "select price from shop_product where id=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($productid));
        $data = $stmt->fetch(PDO::FETCH_ASSOC);
        $price = $data['price'];
        $createtime = time();
        $sql = "select * from shop_cart where productid=? and userid=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($productid, $_SESSION['user_id']));
        $data = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($data) {
            $sql = "update shop_cart set num=num+? where userid=? and productid=?";
            $params = array($num, $_SESSION['user_id'], $productid);
        } else {
            $sql = "insert into shop_cart(productid,num,userid,price,createtime) values(?,?,?,?,?)";
            $params = array($productid, $num, $_SESSION['user_id'], $price, $createtime);
        }
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($params);
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }

    //修改购买数量
    public function change_num($productid, $num)
    {
        $sql = "update shop_cart set num=? where userid=? and productid=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($num, $_SESSION['user_id'], $productid));
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }

    //清空购物车
    public function clear_cart()
    {
        $sql = "delete from shop_cart where userid=?";
        $stmt = $this->pdo->prepare($sql);
        $this->pdo->execute(array($this->user_id));
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }

    //从购物车中删除商品
    public function remove_cart($productid)
    {
        $sql = "delete from shop_cart where productid=? and userid=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($productid, $_SESSION['user_id']));
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }
}

//处理数据
function show($status, $message, $data = array())
{
    $result = array(
        'status' => $status,
        'message' => $message,
        'data' => $data
    );
    exit(json_encode($result));
}

//简单使用
$user = [
    'host' => '',
    'user' => 'root',
    'pwd' => 'root',
    'db' => 'shop',
];
$productid = intval($_POST['productid']);
$num = intval($_POST['num']);
$cart = new Cart($user);
//添加到购物车
$cart->add_cart($productid, $num);
//删除指定的商品
$cart->remove_cart($productid);
//清空
$cart->clear_cart();
?>
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP 中实现更新购物车而不刷新页面的方法通常是使用 AJAX 技术。 AJAX 可以让页面在不刷新的情况下向服务器发送请求,并接收到服务器返回的数据。这样就可以实现在不刷新页面的情况下更新购物车。 下面是一个简单的示例代码: 1. HTML 页面中使用 AJAX 发送请求: ```html <button onclick="updateCart()">更新购物车</button> <script> function updateCart() { var xhr = new XMLHttpRequest(); xhr.open('POST', 'update_cart.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { // 更新购物车视图 } }; xhr.send('product_id=123&quantity=2'); // 发送请求参数 } </script> ``` 2. PHP 脚本中处理 AJAX 请求: ```php <?php // 处理更新购物车请求 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['product_id']) && isset($_POST['quantity'])) { $product_id = $_POST['product_id']; $quantity = $_POST['quantity']; // 更新购物车数据 // ... // 返回更新后的购物车数据 echo json_encode($cart_data); } ?> ``` 在上面的代码中,当用户点击“更新购物车”按钮时,JavaScript 调用了 `updateCart()` 函数,该函数使用 AJAX 发送 POST 请求到 `update_cart.php` 脚本。`update_cart.php` 脚本处理该请求并返回更新后的购物车数据,JavaScript 在接收到响应后更新购物车视图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值