PHP+MYSQL+SESSION+ThinkPHP实现简单购物车功能

PHP+MYSQL+SESSION实现简单购物车功能,

功能列表如下:

  • 1、将物品存入购物车
  • 2、将购物车物品删除
  • 3、修改购物物品购买数量【+1/-1】
  • 4、对购物车物品进行统计
    • 4.1、总项目
    • 4.2、总数量
    • 4.3、总金额
  • 5、对购物车单项物品的数量及金额进行统计
  • 6、清空购物车

class MycartAction{


函数01、function addGoods

  1. /** 
  2.  * 函数:addGoods 
  3.  * 功能:将物品放入购物车[SESSION]中 
  4.  * 简介:将指定物品信息$goods存入指定名$cartName的购物车中,默认在物品信息首部附加“购物车物品序号”$skey 
  5.  * 时间:2011年7月28日 23:51:40 
  6.  * 作者:zhjp 
  7.  * Enter description here ... 
  8.  * 待完善项:在存入购物车之前先进行判断所选物品是否已经存在,是:只修改购买数量、否:存入购物车 
  9.  * @param String $cartName 
  10.  * @param String $goodsStr 
  11.  */  
  12. public function addGoods($cartName$goodsStr){  
  13.     $skey=count($_SESSION[$cartName]);  
  14.     //处理物品信息  
  15.     $goodsStr=$skey.','.$goodsStr;  
  16.     switch ($cartName){  
  17.         case 'flyCart':  
  18.             break;  
  19.         case 'mallCart':  
  20.             //配置物品字段,返回可读性更强的数组格式的物品信息  
  21.             $goodsArr=$this->_setGoodsFields($goodsStr);  
  22.             break;  
  23.         case 'hotelCart':  
  24.             break;  
  25.     }  
  26.     //物品存入购物车  
  27.     $_SESSION[$cartName][$skey]=$goodsArr;  
  28.     //更新购物车信息  
  29.     $this->_updateCart($cartName);  
  30. }  

函数02、function delGoods
  1. /** 
  2.  * 函数:delGoods 
  3.  * 功能:删除购物车[SESSION]中的某一物品 
  4.  * 简介:根据提供的购物车名$cartName及指定购物车物品序号$skey将该物品记录置空值 
  5.  * 时间:2011年7月30日 23:00:59 
  6.  * 作者:by zhjp 
  7.  * Enter description here ... 
  8.  * @param String $cartName 
  9.  * @param Int $skey 
  10.  */  
  11. public function delGoods($cartName$skey){  
  12.     if(!isset($_SESSION[$cartName])){ return ; }  
  13.     if($_SESSION[$cartName]['ITEMS']==1){  
  14.     //  $this->clearAll($cartName);  
  15.     }else{  
  16.         //删除指定物品  
  17.         $_SESSION[$cartName][$skey]=null;  
  18.     }  
  19.     //更新购物车信息  
  20.     $this->_updateCart($cartName);  
  21.   
  22. }  

函数03、function clearAll
  1. /** 
  2.  * 函数:clearAll 
  3.  * 功能:清空购物车中的所有物品信息 
  4.  * 简介:根据提供的购物车名$cartName将该购物车清空 
  5.  * 时间:2011年7月30日 23:07:21 
  6.  * 作者:by zhjp 
  7.  * Enter description here ... 
  8.  * @param String $cartName 
  9.  */  
  10. public function clearAll($cartName){  
  11.     if(isset($_SESSION[$cartName])){   
  12.         unset($_SESSION[$cartName]);  
  13.     }else{  
  14.         return ;  
  15.     }  
  16. }  

函数04、function editCart
  1. /** 
  2.      * 函数:editCart 
  3.      * 功能:编辑购物车信息[物品购物数量+1-1] 
  4.      * 简介:根据提供的购物车名$cartName及操作名$action结合指定购物车物品序号$skey对指定物品的购买数量进行+1-1操作 
  5.      * 时间:2011年7月30日 23:09:27 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      * @param String $action[plus+][minus-] 
  10.      * @param Int $skey 
  11.      */  
  12.     public function editCart($cartName$action$skey){  
  13.         if(!isset($_SESSION[$cartName])){return ;}  
  14.         switch ($action){  
  15.             case 'plus':  
  16.                 $this->_plusOne($cartName$skey);  
  17.                 break;  
  18.             case 'minus':  
  19.                 $this->_minusOne($cartName$skey);  
  20.                 break;  
  21.         }  
  22.         //更新购物车信息  
  23.         $this->_updateCart($cartName);  
  24.     }  

函数05、function searchGoods
  1. /** 
  2.      * 函数:searchGoods 
  3.      * 功能:查找购物车物品信息 
  4.      * 简介:可供添加物品操作调用,如果所添加物品已存在则购物数量+1,反之将物品存入购物车 
  5.      * 时间:2011年8月1日19:14:23 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      */  
  9.     public function searchGoods(){  
  10.   
  11.     }  

函数06、function getCartInfo
  1. /** 
  2.      * 函数:getCartInfo 
  3.      * 功能:获取购物车基本信息【二维数组格式呈现TDArr】 
  4.      * 简介:将购物车中的基本信息数据转化成二维数组【总项目items】【总数量total】【总金额money】 
  5.      * 时间:2011年7月30日 23:14:20 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      */  
  10.     public function getCartInfo($cartName){  
  11.         if(!isset($_SESSION[$cartName])){return ;}  
  12.         $infoArr=array();  
  13.         if(isset($_SESSION[$cartName])){  
  14.             $items=$_SESSION[$cartName]['ITEMS'];  
  15.             $total=$_SESSION[$cartName]['TOTAL'];  
  16.             $money=$_SESSION[$cartName]['MONEY'];  
  17.             $infoArr=array('ITEMS'=>$items,'TOTAL'=>$total,'MONEY'=>$money);  
  18.         }else{  
  19.             unset($infoArr);  
  20.         }  
  21.         return $infoArr;  
  22.     }  

函数07、function getCartList

  1. /** 
  2.      * 函数:getCartList 
  3.      * 功能:获取购物车所有的商品数据【二维数组格式呈现TDArr】 
  4.      * 简介:将购物车中的全部商品数据转化成二维数组,不带HTML代码符 
  5.      * 时间:2011年7月28日 23:56:38 
  6.      * 作者:zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      */  
  10.     public function getCartList($cartName){  
  11.   
  12.         if(isset($_SESSION[$cartName])){  
  13.             $allGoodsTDArr=array();  
  14.             foreach ($_SESSION[$cartNameas $k=>$v){  
  15.                 if(is_array($v)){  
  16.                     $allGoodsTDArr[]=$v;  
  17.                 }  
  18.             }  
  19.         }  
  20.         return $allGoodsTDArr;  
  21.     }  

函数08、function _setGoodsFields

  1. /** 
  2.      * 函数:_setGoodsFields 
  3.      * 功能:配置物品字段,将一条物品记录字符串转化成有相应字段名的数组 
  4.      * 简介: 
  5.      * 0   1  2    3    4      5     6 
  6.      * key id code name extend price numb money 
  7.      * 其中key为购物车商品记录对应的SESSION数组key 
  8.      * 时间:2011年7月28日 23:27:59 
  9.      * 作者:by zhjp 
  10.      * Enter description here ... 
  11.      * @param unknown_type $goodsStr 
  12.      */  
  13.     private function _setGoodsFields($goodsStr){  
  14.         //id,code,name,extend,price  
  15.         $str2Arr=split(','$goodsStr);  
  16.         $goodsArr=array(  
  17.             'key'=>$str2Arr[0],  
  18.             'id'=>$str2Arr[1],  
  19.             'code'=>$str2Arr[2],  
  20.             'name'=>$str2Arr[3],  
  21.             'extend'=>$str2Arr[4],  
  22.             'price'=>$str2Arr[5],  
  23.             'numb'=>$str2Arr[6],  
  24.             'money'=>number_format($str2Arr[5]*$str2Arr[6],2));  
  25.         return $goodsArr;  
  26.     }  

函数09、function _plusOne

  1. /** 
  2.      * 函数:_plusOne 
  3.      * 功能:将物品的购买数量+1 
  4.      * 简介:根据提供的购物车物品序号$skey将指定的商品数量+1 
  5.      * 时间:2011年7月30日 23:24:26 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      * @param Int $skey 
  10.      */  
  11.     private function _plusOne($cartName$skey){  
  12.         if(!isset($_SESSION[$cartName])){ return ;}  
  13.         //指定物品购买数量+1  
  14.         $_SESSION[$cartName][$skey]['numb']+=1;  
  15.         //更新小计金额  
  16.         $price=$_SESSION[$cartName][$skey]['price'];  
  17.         $numb=$_SESSION[$cartName][$skey]['numb'];  
  18.         $_SESSION[$cartName][$skey]['money']=number_format($price*$numb,2);  
  19.         //更新购物车信息  
  20.         $this->_updateCart($cartName);  
  21.     }  

函数10、function _minusOne

  1. /** 
  2.      * 函数:_minusOne 
  3.      * 功能:将物品的购买数量-1 
  4.      * 简介:根据提供的购物车物品序号$skey将指定的商品数量-1 
  5.      * 时间:2011年7月30日 23:27:19 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param unknown_type $cartName 
  9.      * @param unknown_type $skey 
  10.      */  
  11.     private function _minusOne($cartName$skey){  
  12.         if(!isset($_SESSION[$cartName])){ return ;}  
  13.         //指定物品购买数量-1  
  14.         if($_SESSION[$cartName][$skey]['numb']>1){  
  15.             $_SESSION[$cartName][$skey]['numb']-=1;  
  16.             //更新小计金额  
  17.             $price=$_SESSION[$cartName][$skey]['price'];  
  18.             $numb=$_SESSION[$cartName][$skey]['numb'];  
  19.             $_SESSION[$cartName][$skey]['money']=number_format($price*$numb,2);  
  20.         }  
  21.         //更新购物车信息  
  22.         $this->_updateCart($cartName);  
  23.     }  

函数11、function _countMoney
  1. /** 
  2.      * 函数:_countMoney 
  3.      * 功能:统计购物车物品总金额 
  4.      * 简介:总金额[MONEY] 
  5.      * 时间:2011年7月31日 03:17:52 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      */  
  10.     private function _countMoney($cartName){  
  11.         if(!isset($_SESSION[$cartName])){ return ;}  
  12.         $count=0.0;  
  13.         switch ($cartName){  
  14.             case 'flyCart':  
  15.                 break;  
  16.             case 'mallCart':  
  17.                 $cartList=$this->getCartList($cartName);  
  18.                 foreach ($cartList as $k=>$v){  
  19.                     $count+=$v['money'];  
  20.                 }  
  21.                 $_SESSION[$cartName]['MONEY']=number_format($count,2);  
  22.                 break;  
  23.             case 'hotelCart':  
  24.                 break;  
  25.         }  
  26.     }  

函数12、function _countItems

  1. /** 
  2.      * 函数:_countItems 
  3.      * 功能:统计购物车物品总项目 
  4.      * 简介:总项目[ITEMS] 
  5.      * 时间:2011年7月31日 03:23:20 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      */  
  10.     private function _countItems($cartName){  
  11.         if(!isset($_SESSION[$cartName])){ return ;}  
  12.         $count=0;  
  13.         switch ($cartName){  
  14.             case 'flyCart':  
  15.                 break;  
  16.             case 'mallCart':  
  17.                 $cartList=$this->getCartList($cartName);  
  18.                 foreach ($cartList as $k=>$v){  
  19.                     if(is_array($v)){  
  20.                         $count++;  
  21.                     }  
  22.                 }  
  23.                 $_SESSION[$cartName]['ITEMS']=$count;  
  24.                 break;  
  25.             case 'hotelCart':  
  26.                 break;  
  27.         }  
  28.     }  

函数13、function _countTotal

  1. /** 
  2.      * 函数:_countTotal 
  3.      * 功能:统计购物车物品总数量 
  4.      * 简介:总数量[TOTAL] 
  5.      * 时间:2011年7月31日 03:27:11 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      */  
  10.     private function _countTotal($cartName){  
  11.         if(!isset($_SESSION[$cartName])){ return ;}  
  12.         $count=0;  
  13.         switch ($cartName){  
  14.             case 'flyCart':  
  15.                 break;  
  16.             case 'mallCart':  
  17.                 $cartList=$this->getCartList($cartName);  
  18.                 foreach ($cartList as $k=>$v){  
  19.                     $count+=$v['numb'];  
  20.                 }  
  21.                 $_SESSION[$cartName]['TOTAL']=$count;  
  22.                 break;  
  23.             case 'hotelCart':  
  24.                 break;  
  25.         }  
  26.     }  

函数14、function _updateCart

  1. /** 
  2.      * 函数:_updateCart 
  3.      * 功能:更新统计购物车基本信息 
  4.      * 简介:重新统计购物车基本信息【总项目ITEMS/总金额MONEY/总数量TOTAL] 
  5.      * 时间:2011年7月31日 03:31:18 
  6.      * 作者:by zhjp 
  7.      * Enter description here ... 
  8.      * @param String $cartName 
  9.      */  
  10.     private function _updateCart($cartName){  
  11.         $this->_countItems($cartName);  
  12.         $this->_countMoney($cartName);  
  13.         $this->_countTotal($cartName);  
  14.     }  

}

PS:实现的功能比较简单.

放在这里呢

一是作为自己的学习记录

二呢希望对同是初学路人甲有所帮助

Tips:完整DEMO下载,你可以狠狠的点击这里


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值