php删除空数组-第二种形式:PHP+MYSQL+SESSION实现购物车功能分析及源码

2023-09-02 0 3,424 百度已收录

温馨提示:源码部分可滑动查看

函数列表如下:

1. 添加商品到购物

2.删除购物车商品

3.修改购物商品订单数量[+1/-1]

4.统计购物车商品数量

4.1. 项目总计

4.2. 总数

4.3. 总金额

5.统计购物车中单个商品的数量和金额

6.清空购物车

1. 将商品放入购物车 [SESSION]

/** 
* 函数:addGoods
* 功能:将物品放入购物车[SESSION]中
* 简介:将指定物品信息$goods存入指定名$cartName的购物车中,默认在物品信息首部附加“购物车物品序号”$skey
* 时间:2017年7月28日 23:51:40
* 作者:zhjp
* Enter description here ...
* 待完善项:在存入购物车之前先进行判断所选物品是否已经存在,是:只修改购买数量、否:存入购物车
* @param String $cartName
* @param String $goodsStr
*/

public function addGoods($cartName, $goodsStr){  
   $skey=count($_SESSION[$cartName]);  
   //处理物品信息  
   $goodsStr=$skey.','.$goodsStr;  
   switch ($cartName){  
       case 'flyCart':  
           break;  
       case 'mallCart':  
           //配置物品字段,返回可读性更强的数组格式的物品信息  
           $goodsArr=$this->_setGoodsFields($goodsStr);  
           break;  
       case 'hotelCart':  
           break;  
   }  
   //物品存入购物车  
   $_SESSION[$cartName][$skey]=$goodsArr;  
   //更新购物车信息  
   $this->_updateCart($cartName);  
}

2.删除购物车中的商品[SESSION]

/** 
* 函数:delGoods
* 功能:删除购物车[SESSION]中的某一物品
* 简介:根据提供的购物车名$cartName及指定购物车物品序号$skey将该物品记录置空值
* 时间:2017年7月30日 23:00:59
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
* @param Int $skey
*/

public function delGoods($cartName, $skey){  
   if(!isset($_SESSION[$cartName])){ return ; }  
   if($_SESSION[$cartName]['ITEMS']==1){  
   //  $this->clearAll($cartName);  
   }else{  
       //删除指定物品  
       $_SESSION[$cartName][$skey]=null;  
   }  
   //更新购物车信息  
   $this->_updateCart($cartName);  
}

3.清除购物车中所有商品信息

/** 
* 函数:clearAll
* 功能:清空购物车中的所有物品信息
* 简介:根据提供的购物车名$cartName将该购物车清空
* 时间:2017年7月30日 23:07:21
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
*/

public function clearAll($cartName){  
   if(isset($_SESSION[$cartName])){  
       unset($_SESSION[$cartName]);  
   }else{  
       return ;  
   }  
}

4.编辑购物车信息【购买商品数量+1-1】

/** 
* 函数:editCart
* 功能:编辑购物车信息[物品购物数量+1-1]
* 简介:根据提供的购物车名$cartName及操作名$action结合指定购物车物品序号$skey对指定物品的购买数量进行+1-1操作
* 时间:2017年7月30日 23:09:27
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
* @param String $action[plus+][minus-]
* @param Int $skey
*/

public function editCart($cartName, $action, $skey){  
   if(!isset($_SESSION[$cartName])){return ;}  
   switch ($action){  
       case 'plus':  
           $this->_plusOne($cartName, $skey);  
           break;  
       case 'minus':  
           $this->_minusOne($cartName, $skey);  
           break;  
   }  
   //更新购物车信息  
   $this->_updateCart($cartName);  
}

5.查找购物车商品信息

/** 
* 函数:searchGoods
* 功能:查找购物车物品信息
* 简介:可供添加物品操作调用,如果所添加物品已存在则购物数量+1,反之将物品存入购物车
* 时间:2017年8月1日19:14:23
* 作者:by zhjp
* Enter description here ...
*/

public function searchGoods(){  
}

6.获取购物车基本信息

/** 
* 函数:getCartInfo
* 功能:获取购物车基本信息【二维数组格式呈现TDArr】
* 简介:将购物车中的基本信息数据转化成二维数组【总项目items】【总数量total】【总金额money】
* 时间:2017年7月30日 23:14:20
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
*/

public function getCartInfo($cartName){  
   if(!isset($_SESSION[$cartName])){return ;}  
   $infoArr=array();  
   if(isset($_SESSION[$cartName])){  
       $items=$_SESSION[$cartName]['ITEMS'];  
       $total=$_SESSION[$cartName]['TOTAL'];  
       $money=$_SESSION[$cartName]['MONEY'];  
       $infoArr=array('ITEMS'=>$items,'TOTAL'=>$total,'MONEY'=>$money);  
   }else{  
       unset($infoArr);  
   }  
   return $infoArr;  
}

7.获取购物车中所有商品数据

/** 
* 函数:getCartList
* 功能:获取购物车所有的商品数据【二维数组格式呈现TDArr】
* 简介:将购物车中的全部商品数据转化成二维数组,不带HTML代码符
* 时间:2017年7月28日 23:56:38
* 作者:zhjp
* Enter description here ...
* @param String $cartName
*/

public function getCartList($cartName){  
   if(isset($_SESSION[$cartName])){  
       $allGoodsTDArr=array();  
       foreach ($_SESSION[$cartName] as $k=>$v){  
           if(is_array($v)){  
               $allGoodsTDArr[]=$v;  
           }  
       }  
   }  
   return $allGoodsTDArr;  
}

8.配置item数组,将item记录字符串转换为对应数组名的字段

/** 
* 函数:_setGoodsFields
* 功能:配置物品字段,将一条物品记录字符串转化成有相应字段名的数组
* 简介:
* 0   1  2    3    4      5     6
* key id code name extend price numb money
* 其中key为购物车商品记录对应的SESSION数组key
* 时间:2017年7月28日 23:27:59
* 作者:by zhjp
* Enter description here ...
* @param unknown_type $goodsStr
*/

private function _setGoodsFields($goodsStr){  
   //id,code,name,extend,price  
   $str2Arr=split(',', $goodsStr);  
   $goodsArr=array(  
       'key'=>$str2Arr[0],  
       'id'=>$str2Arr[1],  
       'code'=>$str2Arr[2],  
       'name'=>$str2Arr[3],  
       'extend'=>$str2Arr[4],  
       'price'=>$str2Arr[5],  
       'numb'=>$str2Arr[6],  
       'money'=>number_format($str2Arr[5]*$str2Arr[6],2));  
   return $goodsArr;  
}

9. 增加订购商品数量+1

/** 
* 函数:_plusOne
* 功能:将物品的购买数量+1
* 简介:根据提供的购物车物品序号$skey将指定的商品数量+1
* 时间:2017年7月30日 23:24:26
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
* @param Int $skey
*/

private function _plusOne($cartName, $skey){  
   if(!isset($_SESSION[$cartName])){ return ;}  
   //指定物品购买数量+1  
   $_SESSION[$cartName][$skey]['numb']+=1;  
   //更新小计金额  
   $price=$_SESSION[$cartName][$skey]['price'];  
   $numb=$_SESSION[$cartName][$skey]['numb'];  
   $_SESSION[$cartName][$skey]['money']=number_format($price*$numb,2);  
   //更新购物车信息  
   $this->_updateCart($cartName);  
}

10.将商品的订单数量更改为-1

/** 
* 函数:_minusOne
* 功能:将物品的购买数量-1
* 简介:根据提供的购物车物品序号$skey将指定的商品数量-1
* 时间:2017年7月30日 23:27:19
* 作者:by zhjp
* Enter description here ...
* @param unknown_type $cartName
* @param unknown_type $skey
*/

private function _minusOne($cartName, $skey){  
   if(!isset($_SESSION[$cartName])){ return ;}  
   //指定物品购买数量-1  
   if($_SESSION[$cartName][$skey]['numb']>1){  
       $_SESSION[$cartName][$skey]['numb']-=1;  
       //更新小计金额  
       $price=$_SESSION[$cartName][$skey]['price'];  
       $numb=$_SESSION[$cartName][$skey]['numb'];  
       $_SESSION[$cartName][$skey]['money']=number_format($price*$numb,2);  
   }  
   //更新购物车信息  
   $this->_updateCart($cartName);  
}

11.统计购物车中的商品总数

/** 
* 函数:_countMoney
* 功能:统计购物车物品总金额
* 简介:总金额[MONEY]
* 时间:2017年7月31日 03:17:52
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
*/

private function _countMoney($cartName){  
   if(!isset($_SESSION[$cartName])){ return ;}  
   $count=0.0;  
   switch ($cartName){  
       case 'flyCart':  
           break;  
       case 'mallCart':  
           $cartList=$this->getCartList($cartName);  
           foreach ($cartList as $k=>$v){  
               $count+=$v['money'];  
           }  
           $_SESSION[$cartName]['MONEY']=number_format($count,2);  
           break;  
       case 'hotelCart':  
           break;  
   }  
}

12.统计购物车中的商品总数

/** 
* 函数:_countItems
* 功能:统计购物车物品总项目
* 简介:总项目[ITEMS]
* 时间:2017年7月31日 03:23:20
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
*/

private function _countItems($cartName){  
   if(!isset($_SESSION[$cartName])){ return ;}  
   $count=0;  
   switch ($cartName){  
       case 'flyCart':  
           break;  
       case 'mallCart':  
           $cartList=$this->getCartList($cartName);  
           foreach ($cartList as $k=>$v){  
               if(is_array($v)){  
                   $count++;  
               }  
           }  
           $_SESSION[$cartName]['ITEMS']=$count;  
           break;  
       case 'hotelCart':  
           break;  
   }  
}

13.统计购物车中的商品总数

/** 
* 函数:_countTotal
* 功能:统计购物车物品总数量
* 简介:总数量[TOTAL]
* 时间:2017年7月31日 03:27:11
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
*/

private function _countTotal($cartName){  
   if(!isset($_SESSION[$cartName])){ return ;}  
   $count=0;  
   switch ($cartName){  
       case 'flyCart':  
           break;  
       case 'mallCart':  
           $cartList=$this->getCartList($cartName);  
           foreach ($cartList as $k=>$v){  
               $count+=$v['numb'];  
           }  
           $_SESSION[$cartName]['TOTAL']=$count;  
           break;  
       case 'hotelCart':  
           break;  
   }  
}

14、更新统计购物车基本信息

/** 
* 函数:_updateCart
* 功能:更新统计购物车基本信息
* 简介:重新统计购物车基本信息【总项目ITEMS/总金额MONEY/总数量TOTAL]
* 时间:2017年7月31日 03:31:18
* 作者:by zhjp
* Enter description here ...
* @param String $cartName
*/

private function _updateCart($cartName){  
   $this->_countItems($cartName);  
   $this->_countMoney($cartName);  
   $this->_countTotal($cartName);  
}

15.数据表语句

/*  
Source Host           : localhost:3306  
Source Database       : db_xiaohan  
Target Server Type    : MYSQL  
Date: 2017-08-05 08:46:10  
*/

SET FOREIGN_KEY_CHECKS=0;  
-- ----------------------------  
-- Table structure for `ixh_mallgoods`  
-- ----------------------------  
DROP TABLE IF EXISTS `ixh_mallgoods`;  
CREATE TABLE `ixh_mallgoods` (  
 `id` int(11) NOT NULL AUTO_INCREMENT,  
 `code` varchar(255) DEFAULT NULL,  
 `name` varchar(255) DEFAULT NULL,  
 `extend` varchar(255) DEFAULT NULL,  
 `price` float DEFAULT NULL,  
 PRIMARY KEY (`id`)  
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;  
-- ----------------------------  
-- Records of ixh_mallgoods  
-- ----------------------------  
INSERT INTO ixh_mallgoods VALUES ('1', 'CLELE-GS1001', '商品一', '小尺寸', '22.5');

以上cookie优化和购物车例子都是小编分享的内容。 希望能给大家一个参考。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php删除空数组-第二种形式:PHP+MYSQL+SESSION实现购物车功能分析及源码 https://www.wkzy.net/game/189464.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务