如何实现PHP+MYSQL+SESSION实现加入购物车
功能列表如下:
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 ...
* 待完善项:在存入购物车之前先进行判断所选物品是否已经存在,是:只修改购买数量、否:存入购物车
*@paramString $cartName
*@paramString $goodsStr
*/
publicfunctionaddGoods($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 ...
*@paramString $cartName
*@paramInt $skey
*/
publicfunctiondelGoods($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 ...
*@paramString $cartName
*/
publicfunctionclearAll($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 ...
*@paramString $cartName
*@paramString $action[plus+][minus-]
*@paramInt $skey
*/
publicfunctioneditCart($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 ...
*/
publicfunctionsearchGoods(){
}
6,获取购物车基本信息
/**
* 函数:getCartInfo
* 功能:获取购物车基本信息【二维数组格式呈现TDArr】
* 简介:将购物车中的基本信息数据转化成二维数组【总项目items】【总数量total】【总金额money】
* 时间:2017年7月30日 23:14:20
* 作者:by zhjp
* Enter description here ...
*@paramString $cartName
*/
publicfunctiongetCartInfo($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 ...
*@paramString $cartName
*/
publicfunctiongetCartList($cartName){
if(isset($_SESSION[$cartName])){
$allGoodsTDArr=array();
foreach($_SESSION[$cartName]as$k=>$v){
if(is_array($v)){
$allGoodsTDArr[]=$v;
}
}
}
return$allGoodsTDArr;
}
8,配置物品字段,将一条物品记录字符串转化成有相应字段名的数组
/**
* 函数:_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 ...
*@paramunknown_type $goodsStr
*/
privatefunction_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 ...
*@paramString $cartName
*@paramInt $skey
*/
privatefunction_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 ...
*@paramunknown_type $cartName
*@paramunknown_type $skey
*/
privatefunction_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 ...
*@paramString $cartName
*/
privatefunction_countMoney($cartName){
if(!isset($_SESSION[$cartName])){return;}
$count=0.0;
switch($cartName){
case'flyCart':
break;
case'mallCart':
$cartList=$this->getCartList($cartName);
foreach($cartListas$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 ...
*@paramString $cartName
*/
privatefunction_countItems($cartName){
if(!isset($_SESSION[$cartName])){return;}
$count=0;
switch($cartName){
case'flyCart':
break;
case'mallCart':
$cartList=$this->getCartList($cartName);
foreach($cartListas$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 ...
*@paramString $cartName
*/
privatefunction_countTotal($cartName){
if(!isset($_SESSION[$cartName])){return;}
$count=0;
switch($cartName){
case'flyCart':
break;
case'mallCart':
$cartList=$this->getCartList($cartName);
foreach($cartListas$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 ...
*@paramString $cartName
*/
privatefunction_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
*/
SETFOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `ixh_mallgoods`
-- ----------------------------
DROPTABLEIFEXISTS`ixh_mallgoods`;
CREATETABLE`ixh_mallgoods`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`code`varchar(255)DEFAULTNULL,
`name`varchar(255)DEFAULTNULL,
`extend`varchar(255)DEFAULTNULL,
`price`floatDEFAULTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=7DEFAULTCHARSET=utf8;
-- ----------------------------
-- Records of ixh_mallgoods
-- ----------------------------
INSERTINTOixh_mallgoodsVALUES('1','CLELE-GS1001','商品一','小尺寸','22.5');
以上这篇cookie的优化与购物车实例就是小编分享给大家的全部内容了,希望能给大家一个参考