购物车实现思路:cookie + 数据库
一、加入购物车
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 + 数据库的更多相关文章
- PHP实现购物车的思路和源码分析
正文内容 这里主要是记录下自己的购物车的思路,具体功能实现,但是尚未在实际项目中用到,不对之处欢迎指正 项目中需要添加购物车. 目录说明 buy.php 点击购买之后的操作 car.php 购物车,显 ...
- 购物车信息存cookie
//以商品为单位分别存入到各个不同的cookie中,避免因为cookie值过大,导致数据存储失败 $cart_info_one[brand_name] = $parent['brand_name']; ...
- php之购物车类思路及代码
<?php /* 购物车类 1.整站范围内,购物车--全局有效 解决:把购物车的信息,放在session里 2.既然全局有效,购物车的实例只有一个 解决:单例模式 技术选型:session+单例 ...
- 在WebForm中实现购物车思路
关于网站购物车的实现的思考 写在前面的话:刚来公司的的时候,老大安排了一个任务,企业站,但是需要实现购物车的功能,以前没做过,所有就向周围的人请教了一下如何实现购物车,自己也在网上搜了一下,有了些 ...
- jsp电子商务购物车之四 数据库存储篇
为了方便用户下次登录,仍然可以看到自己的购物车内容,所以,需要在数据库存储相应的购物车项目,本处增加购物车项表;uid和bid是复合主键. package com.cart.entity; //购物车 ...
- taotao购物车2 解决购物车本地cookie和服务器redis不同步的问题
下面的思路逻辑一定要理清楚,比较绕 思路; 前面已经实现了在cookie本地维护购物车的功能, 这次加入和服务器同步功能, 因为 购物车 操作比较频繁,所以,后台服务器 用redis存储用户的购物车信 ...
- (JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除
//JS实现顾客浏览商品的记录以及实现购物车的功能function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.s ...
- 购物车非cookie版
2015.11.26购物车,非cookie版 [点击来,你发现被骗了(笑哭,笑哭,笑哭,源代码的话,留下邮箱吧,是在不好找这一时半会儿的.)] Jsp通过反射机制获取bean中的标签,但其实,可以没有 ...
- php写购物车(思路&源码)
本文介绍一个php实现的购物车代码,功能实现完整,具有一定的参考价值 这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是少不了的 具体分析如下: 对购物车里 ...
随机推荐
- 分别使用原生js和jQuery添加/删除元素的class属性
一.原生js添加/删除元素的class属性: <!-- span元素原有class = "test" --> <span class="test&quo ...
- pyqt5通过qt designer 设计方式连接多个UI图形界面
当我们通过pyqt开发时,eric6为我们提供了一个方便的工具:图形化的绘制UI工具--qtdesigner.我们可以通过它开发多个UI,然后利用信号-槽工具,将功能代码附着在上面.也可以将多个界面连 ...
- Spring IoC的底层技术支持——Java反射机制
我们知道,通过 new XmlClassPathApplicationContext("beans.xml")等方式即可启动容器.在容器启动时,Spring 根据配置文件的描述信息 ...
- Solr简单总结
Solr 运行Solr服务 方式一:Jetty服务器启动Solr 进入solr-4.10.2/example目录 打开命令行,执行java –jar start.jar命令,即可启动Solr服务 打开 ...
- PHP令人困惑的strtotime
经常会有人被strtotime结合-1 month, +1 month, next month的时候搞得很困惑, 然后就会觉得这个函数有点不那么靠谱, 动不动就出问题. 用的时候就会很慌… 比如:今天 ...
- 使用source命令解决mysql导入乱码问题
设定编码格式:mysql -u root -p --default-character-set=utf8 use dbname source /root/newsdata.sql
- SQL Server附加数据库拒绝访问错误解决方法
今天在MsSQL里附加数据库时提示操作系统错误5(拒绝访问),这里我没给出了两个解决方案供大家解决问题. 方案一:切换登录方式 出现这种情况是由于用“混合验证方式”(SQL Server身份验证)登录 ...
- FreeRTOS任务暂停和启动函数
任务句柄 TaskHandle_t pump_task_handle = NULL; 任务的启动函数 if(eTaskGetState(pump_task_handle) != eRunning) v ...
- 如何删除TFS项目
TFS是先建集合,再在集合下面建项目.删除的时候,需要先删除项目,再删除集合,然后重新建.具体步骤如下: 1.删除项目 删除项目必须通过命令来进行删除,调用TFSDeleteProjec ...
- LeetCode题目解答
LeetCode题目解答——Easy部分 Posted on 2014 年 11 月 3 日 by 四火 [Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复 ...