用session和mysql实现购物车_PHP+MYSQL+SESSION实现简单购物车功能

这篇博客介绍了如何使用PHP和MySQL结合SESSION来实现购物车功能。通过一系列的PHP函数,如addGoods、delGoods、clearAll、editCart等,实现了添加商品、删除商品、清空购物车和编辑购物车数量的功能。同时,文章提到了相关数据表结构,展示了商品表`ixh_mallgoods`的创建和数据插入。
摘要由CSDN通过智能技术生成

1[PHP]代码/**

* 函数:addGoods

* 功能:将物品放入购物车[SESSION]中

* 简介:将指定物品信息$goods存入指定名$cartName的购物车中,默认在物品信息首部附加“购物车物品序号”$skey

* 时间:2011年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.[PHP]代码/**

* 函数:delGoods

* 功能:删除购物车[SESSION]中的某一物品

* 简介:根据提供的购物车名$cartName及指定购物车物品序号$skey将该物品记录置空值

* 时间:2011年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.[PHP]代码/**

* 函数:clearAll

* 功能:清空购物车中的所有物品信息

* 简介:根据提供的购物车名$cartName将该购物车清空

* 时间:2011年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.[PHP]代码/**

* 函数:editCart

* 功能:编辑购物车信息[物品购物数量+1-1]

* 简介:根据提供的购物车名$cartName及操作名$action结合指定购物车物品序号$skey对指定物品的购买数量进行+1-1操作

* 时间:2011年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.[PHP]代码/**

* 函数:searchGoods

* 功能:查找购物车物品信息

* 简介:可供添加物品操作调用,如果所添加物品已存在则购物数量+1,反之将物品存入购物车

* 时间:2011年8月1日19:14:23

* 作者:by zhjp

* Enter description here ...

*/

public function searchGoods(){

}

6.[PHP]代码/**

* 函数:getCartInfo

* 功能:获取购物车基本信息【二维数组格式呈现TDArr】

* 简介:将购物车中的基本信息数据转化成二维数组【总项目items】【总数量total】【总金额money】

* 时间:2011年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.[PHP]代码/**

* 函数:getCartList

* 功能:获取购物车所有的商品数据【二维数组格式呈现TDArr】

* 简介:将购物车中的全部商品数据转化成二维数组,不带HTML代码符

* 时间:2011年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.[PHP]代码/**

* 函数:_setGoodsFields

* 功能:配置物品字段,将一条物品记录字符串转化成有相应字段名的数组

* 简介:

* 0 1 2 3 4 5 6

* key id code name extend price numb money

* 其中key为购物车商品记录对应的SESSION数组key

* 时间:2011年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.[PHP]代码/**

* 函数:_plusOne

* 功能:将物品的购买数量+1

* 简介:根据提供的购物车物品序号$skey将指定的商品数量+1

* 时间:2011年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.[PHP]代码/**

* 函数:_minusOne

* 功能:将物品的购买数量-1

* 简介:根据提供的购物车物品序号$skey将指定的商品数量-1

* 时间:2011年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.[PHP]代码/**

* 函数:_countMoney

* 功能:统计购物车物品总金额

* 简介:总金额[MONEY]

* 时间:2011年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.[PHP]代码/**

* 函数:_countItems

* 功能:统计购物车物品总项目

* 简介:总项目[ITEMS]

* 时间:2011年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.[PHP]代码/**

* 函数:_countTotal

* 功能:统计购物车物品总数量

* 简介:总数量[TOTAL]

* 时间:2011年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.[PHP]代码/**

* 函数:_updateCart

* 功能:更新统计购物车基本信息

* 简介:重新统计购物车基本信息【总项目ITEMS/总金额MONEY/总数量TOTAL]

* 时间:2011年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: 2011-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');

f68f2add0b68e4f9810432fce46917b7.png

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值