購物車實現思路:cookie + 數據庫


一、加入購物車

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不存在,則直接遍歷數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM