一、加入购物车

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

购物车实现思路:cookie + 数据库的更多相关文章

  1. PHP实现购物车的思路和源码分析

    正文内容 这里主要是记录下自己的购物车的思路,具体功能实现,但是尚未在实际项目中用到,不对之处欢迎指正 项目中需要添加购物车. 目录说明 buy.php 点击购买之后的操作 car.php 购物车,显 ...

  2. 购物车信息存cookie

    //以商品为单位分别存入到各个不同的cookie中,避免因为cookie值过大,导致数据存储失败 $cart_info_one[brand_name] = $parent['brand_name']; ...

  3. php之购物车类思路及代码

    <?php /* 购物车类 1.整站范围内,购物车--全局有效 解决:把购物车的信息,放在session里 2.既然全局有效,购物车的实例只有一个 解决:单例模式 技术选型:session+单例 ...

  4. 在WebForm中实现购物车思路

    关于网站购物车的实现的思考   写在前面的话:刚来公司的的时候,老大安排了一个任务,企业站,但是需要实现购物车的功能,以前没做过,所有就向周围的人请教了一下如何实现购物车,自己也在网上搜了一下,有了些 ...

  5. jsp电子商务购物车之四 数据库存储篇

    为了方便用户下次登录,仍然可以看到自己的购物车内容,所以,需要在数据库存储相应的购物车项目,本处增加购物车项表;uid和bid是复合主键. package com.cart.entity; //购物车 ...

  6. taotao购物车2 解决购物车本地cookie和服务器redis不同步的问题

    下面的思路逻辑一定要理清楚,比较绕 思路; 前面已经实现了在cookie本地维护购物车的功能, 这次加入和服务器同步功能, 因为 购物车 操作比较频繁,所以,后台服务器 用redis存储用户的购物车信 ...

  7. (JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除

    //JS实现顾客浏览商品的记录以及实现购物车的功能function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.s ...

  8. 购物车非cookie版

    2015.11.26购物车,非cookie版 [点击来,你发现被骗了(笑哭,笑哭,笑哭,源代码的话,留下邮箱吧,是在不好找这一时半会儿的.)] Jsp通过反射机制获取bean中的标签,但其实,可以没有 ...

  9. php写购物车(思路&源码)

    本文介绍一个php实现的购物车代码,功能实现完整,具有一定的参考价值 这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是少不了的 具体分析如下: 对购物车里 ...

随机推荐

  1. Java解决跨域问题

    同源 URL由协议, 域名, 端口组成. 如果两个URL的协议, 域名, 端口相同, 那么这两个URL为同源. 同源策略 script, iframe, link 可以跨域加载一些静态资源, 比如脚本 ...

  2. VS中R转义字符处理

    std::string s1 = R"(Name="Hello World ... ")"; std::string s2 = R"-(Name=&q ...

  3. ABAP术语-Function Module

    Function Module 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/18/1071827.html General-purpose ...

  4. ABAP术语-Business Object Type

    Business Object Type 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/10/1033480.html Generic de ...

  5. 构建高可靠hadoop集群之4-权限指引

    此文翻译自http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html ...

  6. PLC编码规范

    PC在编码规范方面比PLC要好很多.既然它们都是编程语言,那么PC方面的规范是否可以用与PLC呢?答案是肯定的,但需要作取舍.下面规范中的大部分可以用于一般PLC,其中有些只是针对西门子博途,使用时需 ...

  7. jenkins+maven+docker集成java发布(一)自动发布

    JAVA项目持续集成发布 标签(空格分隔): java jenkins 微服务中持续集成自动发布是很重要的一个环节,将不同的模块应用自动部署到一台或者N台服务器中如果采用人工部署的方式不太现实 git ...

  8. jmeter 插件安装

    1.下载Plugins Manager插件 打开下载插件地址:https://jmeter-plugins.org/ 2.将下载的plugins-manager.jar包复制到Jmeter安装目录,l ...

  9. Hive 复杂数据类型的使用

    Hive复杂数据类型 1.Array数据类型的使用 1.1.创建数据库表,以array作为数据类型 hive (hive_demo1)> create table stu_test(name a ...

  10. Epplus下的一个将Excel转换成List的范型帮助类

    因为前一段时间公司做项目的时候,用到了Excel导入和导出,然后自己找了个插件Epplus进行操作,自己将当时的一些代码抽离出来写了一个帮助类. 因为帮助类是在Epplus基础之上写的,项目需要引用E ...