一、加入购物车
1、用户未登录 ==》 将商品id和商品数量存为数组 ==》序列化后存到cookie中
代码:
1 if(!isset($_SESSION['uid'])){
2 if(empty($_COOKIE['gwc'])){
3 $arr[0]['gid'] = $data['gid'];
4 $arr[0]['gnum'] = $data['gnum'];
5 $arr = serialize($arr);
6 cookie('gwc',$arr);
7 }else{
8 $arr = cookie('gwc');
9 $arr = unserialize($arr);
10 for($i=0;$i<count($arr);$i++){
11
12 if($arr[$i]['gid'] == $data['gid']){
13 $arr[$i]['gnum'] = $arr[$i]['gnum']+$data['gnum'];
14 $arr = serialize($arr);
15 cookie('gwc',$arr);
16
17 }
18 }
19 $len = count($arr);
20 $arr[$len]['gid'] = $data['gid'];
21 $arr[$len]['gnum'] = $data['gnum'];
22 $arr = serialize($arr);
23 cookie('gwc',$arr);
24
25 }
26
27 }
这里注意判断:如果之前此商品加入过购物车,则更新此商品的数量
2、用户已登录 ==》 直接将商品ID和商品数量存入到数据库
这个很简单没什么说的
购物车中获取商品信息
这里需要复杂的判断
1、如果用户没登录 ==》跳转登录页面
2、如果用户已登录 ==》跳转购物车页面
2A ==》如果购物车cookie存在,则将购物车cookie更新到数据库
建议:用户登录后直接进行这个数据库更新更好
注意:cookie的数据需要反序列化后再插入数据,再插入数据库时需要检查数据库是否有该商品,如果有则更新数据库该商品的数量,如果没有则添加商品,代码如下:
1 if(!empty($_COOKIE['gwc'])){
2 $arr = $_COOKIE['gwc'];
3 $arr = unserialize($arr);
4 foreach($arr as $a){
5 $agid = $a['gid'];
6 $test = M('shopcart')
7 ->where("gid = '{$agid}' and uid = '{$uid}'")
8 ->find();
9 if(is_null($test)){
10 $data['gid']=$a['gid'];
11 $data['gnum'] = $a['gnum'];
12 $data['uid'] = $uid;
13 $data['addtime'] = time();
14 $res = M('shopcart')->add($data);
15 }else{
16 $data['gnum'] = $a['gnum']+$test['gnum'];
17 $tgid = $test['gid'];
18 $res = M('shopcart')->where("gid='{$tgid}' and uid = '{$uid}'")->save($data);
19 }
20 }
2B ==》如果购物车cookie不存在,则直接遍历数据