一、加入购物车

1、用户未登录  ==》 将商品id和商品数量存为数组 ==》序列化后存到cookie中

代码:

 if(!isset($_SESSION['uid'])){
if(empty($_COOKIE['gwc'])){
$arr[0]['gid'] = $data['gid'];
$arr[0]['gnum'] = $data['gnum'];
$arr = serialize($arr);
cookie('gwc',$arr);
}else{
$arr = cookie('gwc');
$arr = unserialize($arr);
for($i=0;$i<count($arr);$i++){ if($arr[$i]['gid'] == $data['gid']){
$arr[$i]['gnum'] = $arr[$i]['gnum']+$data['gnum'];
$arr = serialize($arr);
cookie('gwc',$arr); }
}
$len = count($arr);
$arr[$len]['gid'] = $data['gid'];
$arr[$len]['gnum'] = $data['gnum'];
$arr = serialize($arr);
cookie('gwc',$arr); } }

这里注意判断:如果之前此商品加入过购物车,则更新此商品的数量

2、用户已登录  ==》 直接将商品ID和商品数量存入到数据库

这个很简单没什么说的

购物车中获取商品信息

这里需要复杂的判断

1、如果用户没登录 ==》跳转登录页面

2、如果用户已登录 ==》跳转购物车页面

2A ==》如果购物车cookie存在,则将购物车cookie更新到数据库

建议:用户登录后直接进行这个数据库更新更好

注意:cookie的数据需要反序列化后再插入数据,再插入数据库时需要检查数据库是否有该商品,如果有则更新数据库该商品的数量,如果没有则添加商品,代码如下:

 if(!empty($_COOKIE['gwc'])){
$arr = $_COOKIE['gwc'];
$arr = unserialize($arr);
foreach($arr as $a){
$agid = $a['gid'];
$test = M('shopcart')
->where("gid = '{$agid}' and uid = '{$uid}'")
->find();
if(is_null($test)){
$data['gid']=$a['gid'];
$data['gnum'] = $a['gnum'];
$data['uid'] = $uid;
$data['addtime'] = time();
$res = M('shopcart')->add($data);
}else{
$data['gnum'] = $a['gnum']+$test['gnum'];
$tgid = $test['gid'];
$res = M('shopcart')->where("gid='{$tgid}' and uid = '{$uid}'")->save($data);
}
}

2B ==》如果购物车cookie不存在,则直接遍历数据

最新文章

  1. Tensorflow 处理libsvm格式数据生成TFRecord (parse libsvm data to TFRecord)
  2. [NOIP2012]国王游戏 题解
  3. android模拟器停在Waiting for HOME解决方案
  4. Java RMI 框架
  5. HTML5简介及HTML5的发展前景
  6. 【c++内存分布系列】单独一个类
  7. Android(java)学习笔记144:Android音视频录制类MediaRecorder用法举例
  8. C++构造函数的自动调用(调用一个父类的构造函数,有显性调用最好,否则就默认调用无参数的构造函数)——哲学思想:不调用怎么初始化父类的成员数据和VMT?
  9. java学习之负数的进制
  10. 自定义View—绘制基本图形
  11. Android Log工具类
  12. subList ArrayList LinkedList
  13. Saltstack报错小记
  14. WIFI 802.11 a/b/g/n/ac
  15. 杂谈1.py
  16. BZOJ.2741.[FOTILE模拟赛]L(分块 可持久化Trie)
  17. 洛谷 5291 [十二省联考2019]希望(52分)——思路+树形DP
  18. effective c++ 笔记 (18-22)
  19. 如何修改Mac截屏保存路径
  20. (一)ROS的安装与环境配置

热门文章

  1. D - 湫湫系列故事——减肥记II
  2. checked=&quot;checked&quot;无效,radio未选中问题排查
  3. 关于parseInt的看法
  4. 如何解决thinkphp5中验证码常见问题?
  5. PHP队列之理论篇
  6. Apache httpd Server 配置正向代理
  7. linux课后作业1
  8. 分享一个工作中遇得到的sql(按每天每人统计拖车次数与小修次数)
  9. python基础之多线程
  10. 4.HBASE数据迁移方案(之snapshot):