购物车实现思路: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购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是少不了的 具体分析如下: 对购物车里 ...
随机推荐
- awk分隔符
最近需要检测日志,shell中用到了awk,因为分割条件不止一个,并且包括了中括号.在此记录一下关于多分隔符并且包含中括号的情况 awk -F'[=,]|[][]+' '{print $6}'
- 【Nowcoder 上海五校赛】1 + 2 = 3?(斐波那契规律)
题目描述 小Y在研究数字的时候,发现了一个神奇的等式方程,他屈指算了一下有很多正整数x满足这个等式,比如1和2,现在问题来了,他想知道从小到大第N个满足这个等式的正整数,请你用程序帮他计算一下. (表 ...
- 使用Python操作Office——EXCEL
首先介绍下office win32 com接口,这个是MS为自动化提供的操作接口,比如我们打开一个EXCEL文档,就可以在里面编辑VB脚本,实现我们自己的效果.对于这种一本万利的买卖,Python怎么 ...
- JSP/Servlet开发——第五章 使用分层实现业务处理
1.JNDI(Java Naming and Directory Interface)Java命名和目录接口: ●JNDI:是一个有关应用序设计的 API 为开发人员提供了查找和访问各种命名和目录服务 ...
- less学习三---父选择器
引用父选择器需要用到“&”符号 &运算符表示嵌套规则的父选择器,并且在修改类或伪类选择器的应用中非常普遍 ul{ li{ &:nth-child(2) a { color: r ...
- spring-运行时值注入
在项目中经常使用连接数据库的配置,如下所示 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDa ...
- Python特别low的一个文字游戏
闲来无事 ,调侃舍友的游戏 import os class Role(): def __init__(self,name,sex,fighting): self.name=name self.sex= ...
- 332. Reconstruct Itinerary
class Solution { public: vector<string> path; unordered_map<string, multiset<string>& ...
- Nodejs模块初始化
模块初始化 一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象.之后,缓存起来的导出对象被重复利用. 主模块 通过命令行参数传递给NodeJS以启动程序的模块被称为 ...
- ESP32 学习笔记 - 环境搭建
打开终端 输入命令 sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-seria ...