chengzhongde

一、加入购物车

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不存在,则直接遍历数据

 

分类:

技术点:

相关文章: