博主信息
博文 91
粉丝 2
评论 4
访问量 146808
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
使用Redis实现购物车
夏日的烈风的博客
原创
5295人浏览过

核心代码如下

Cart.class.php代码

 <?php

//使用redis实现一个购物车功能
class Cart
{

   /**
    *  购物车有功能: 1、 将商品添加到购物车中  2、改变购物车商品数量  3、显示购物车的信息
    *
    *
    * 将商品添加到购物车中功能分析如下:
    * 1. 接收到商品ID
    * 2. 根据商品ID查询商品信息
    * 3. 将商品信息加入到购物车中
    *
    *         a. 判断购物车是否已有对应商品
    *         b. 如果购物车中没有对应的商品,直接加入
    *         c. 如果购物车中有对应的商品,只要修改商品数量
    */

   public function __construct()
   {
       //如果成员属性没有声明,默认就是公有属性
       $this->redis = new Redis;
       $this->redis->connect('127.0.0.1', 6379);
   }

   public function addToCart($gid, $cartNum=1)
   {

       session_start();
       if ($gid <= 0) {

           throw new Exception("请输入商品ID");

       }

       //根据商品ID查询商品数据
       $goodData = $this->goodsData($gid);

       $key = 'cart:'.session_id().':'.$gid;//id 说明:1、不仅仅要区分商品  2、 用户

       // $data = $this->redis->hget($key, 'id');
       $data = $this->redis->exists($key);


       //判断购物车中是否有无商品,然后根据情况加入购物车
       if (!$data) {

           //购物车之前没有对应的商品的

           //购物车的商品数量
           $goodData['num'] = $cartNum;

           //将商品数据存放到redis中hash
           $this->redis->hmset($key, $goodData);


           $key1 = 'cart:ids:set:'.session_id();

           //将商品ID存放集合中,是为了更好将用户的购物车的商品给遍历出来
           $this->redis->sadd($key1, $gid);

       } else {

           //购物车有对应的商品,只需要添加对应商品的数量
           $originNum = $this->redis->hget($key, 'num');

           //原来的数量加上用户新加入的数量
           $newNum = $originNum + $cartNum;

           $this->redis->hset($key, 'num', $newNum);


       }

   }

   //显示用户购物车的所有商品
   public function showCartList()
   {

       session_start();

       $sessId = session_id();


       $key = 'cart:ids:set:'.session_id();

       //先根据集合拿到商品ID
       $idArr =  $this->redis->sMembers($key);


       for ($i=0; $i<count($idArr); $i++) {

           $k  = 'cart:'.session_id().':'.$idArr[$i];//id

           // echo $k,'<br/>';
           $list[] = $this->redis->hGetAll($k);
       }

       include './View/show.php';

   }

   public function goodsData($gid)
   {

       $goodsData = array(

           1 => array(
               'id' => 1,
               'gname' => 'xxoo',
               'price' => '1.5'
           ),

           2 => array(
               'id' => 2,
               'gname' => 'xxoo22',
               'price' => '221.5'
           ),
           3 => array(
               'id' => 3,
               'gname' => 'xxoo33',
               'price' => '331.5'
           ),
           4 => array(
               'id' => 4,
               'gname' => 'xxoo44',
               'price' => '4441.5'
           ),    
       );

       return $goodsData[$gid];
   }
}


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学