一、加入購物車
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不存在,則直接遍歷數據