如何实现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的优化与购物车实例就是小编分享给大家的全部内容了,希望能给大家一个参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,137评论 2 38
  • 全文链接 第一章 创建一个blog应用第二章 使用高级特性来增强你的blog第三章 扩展你的blog应用第四章上 ...
    夜夜月阅读 10,009评论 27 36
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,752评论 2 9
  • 《冬》 文/孤峰劲松 秃柳悬玉坠 苍松添素衣 欲将访故友 冰河倾楫摧
    孤峰劲松阅读 265评论 0 0
  • 这个图,非常励志,给人的感觉就是:信任!如果你信我,我绝对不让你掉下去!就像我相信你一样,人的一生中最重要...
    张应荣阅读 368评论 0 0