thinkphp做的session购物车,求详细代码。有完整例子的可以发下。非常感谢

 我来答
tyua07
推荐于2016-01-04 · TA获得超过156个赞
知道小有建树答主
回答量:101
采纳率:100%
帮助的人:103万
展开全部
<?php


class CartTool {
    private static $ins = null;
    private $items = array();

    final protected function __construct() {
    }

    final protected function __clone() {
    }

    // 获取实例
    protected static function getIns() {
        if(!(self::$ins instanceof self)) {
            self::$ins = new self();
        }

        return self::$ins;
    }


    // 把购物车的单例对象放到session里
    public static function getCart() {
        if(!isset($_SESSION['cart']) || !($_SESSION['cart'] instanceof self)) {
            $_SESSION['cart'] = self::getIns();
        }

        return $_SESSION['cart'];
    }


    /*
    添加商品
    param int $id 商品主键
    param string $name 商品名称
    param float $  商品价格
    param int $num 购物数量
    */
    public function addItem($id,$name,$price,$brand,$thumb,$num=1) {
        
        if($this->hasItem($id)) { // 如果该商品已经存在,则直接加其数量
            $this->incNum($id,$num);
            return;
        }
        
        $item = array();
$item['id'] = $id;
        $item['name'] = $name;
        $item['price'] = $price;
$item['brand'] = $brand;
$item['thumb'] = $thumb;
        $item['num'] = $num;
        
        $this->items[$id] = $item;
        
        return $this->items[$id];
        

    }


    /*
    修改购物车中的商品数量
    param int $id 商品主键
    param int $num 某个商品修改后的数量,即直接把某商品的数量改为$num
    */
    public function modNum($id,$num=1) {
        if(!$this->hasItem($id)) {
            return false;
        }

        $this->items[$id]['num'] = $num;

    }


    /*
    商品数量增加1
    */
    public function incNum($id,$num=1) {
        if($this->hasItem($id)) {
            $this->items[$id]['num'] += $num;
        }
    }


    /*
    商品数量减少1
    */
    public function decNum($id,$num=1) {
        if($this->hasItem($id)) {
            $this->items[$id]['num'] -= $num;
        }

        // 如果减少后,数量为0了,则把这个商品从购物车删掉
        if($this->items[$id]['num'] < 1) {
            $this->delItem($id);
        }
    }


    /*
        判断某商品是否存在
    */
    public function hasItem($id) {
        return array_key_exists($id,$this->items);
    }
      

    /*
        删除商品
    */
    public function delItem($id) {
        unset($this->items[$id]);
    }


    /*
        查询购物车中商品的种类
    */
    public function getCnt() {
        return count($this->items);
    }


    /*
        查询购物车中商品的个数
    */
    public function getNum() {
        if($this->getCnt() == 0) {
            return 0;
        }
        
        $sum = 0;

        foreach($this->items as $item) {
            $sum += $item['num'];
        }

        return $sum;
    }


    /*
        查询购物车中商品的总金额
    */
    public function getPrice() {
        if($this->getCnt() == 0) {
            return 0;
        }
        
        $price = 0.0;

        foreach($this->items as $item) {
            $price += $item['num'] * $item['price'];
        }

        return $price;
    }
    


    /*
    返回购物车中的所有商品
    */

    public function all() {
        return $this->items;
    }

    /*
        清空购物车
    */
    public function clear() {
        $this->items = array();
    }
}




以上是类文件,需要引入的。



$cart = CartTool::getCart();
$car_goods_list = $cart->all();//获取商品列表

$goods_num = $cart->getNum();//商品个数

$goods_sum_price =$cart->getPrice();//总价格

$cart->addItem($goods_id,$goods_list['goods_name'],$goods_list['shop_price'],$goods_list['brand'],$goods_list['goods_thumb'],$num);//增加一件商品到购物车

$cart->clear();//清空购物车
追问

这个是购买商品页面,商品不是再同一个页面点击到购物车的。单独一个产品传到购物车,然后点击另外一个产品继续加到购物车。怎么把参数传到购物车页面显示出来。

云创
2023-07-25 广告
Web应用安全测试服务价格通常是由服务提供商根据以下因素确定的:1. 测试的复杂性和范围:Web应用安全测试可以包括多种不同的测试方法和技术,如黑盒测试、白盒测试、灰盒测试等。服务提供商会根据应用程序的特性和安全需求,评估测试的复杂性和范围... 点击进入详情页
本回答由云创提供
府闳0gu238
2014-04-29 · 超过32用户采纳过TA的回答
知道答主
回答量:128
采纳率:100%
帮助的人:81.1万
展开全部
到thinkphp官网上找一个不就可以了,上面有很多的实例啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式