购物车实现思路: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购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是少不了的 具体分析如下: 对购物车里 ...
随机推荐
- 微信订阅号 获取用户基本信息,登录及 php
<?php //echo file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_cr ...
- jquery如何获取对应表单元素?
问题描述:我页面中有这样多个表单,我都是这个定义的,当我点击确定按钮时,此时能够获得相对应的表单对象,我该怎么获取到他的两个值呢? 解决方案: 页面元素 <form id="form1 ...
- 数据分析处理库Pandas——字符串操作
字符串小写 字符串大写 字符串长度 去掉字符串中的空格 去掉字符串中的左空格 去掉字符串中的右空格 字符串替换 按字符串切割 字符串是否包含在另一个字符串中
- 多线程编程之Apue3rd_Chapter11之互斥锁_读写锁_自旋锁
学习了apue3rd的第11章,主要讲的是多线程编程.因为线程共享进程的资源比如堆和全局变量,多线程编程最重要的是,使用各种锁进行线程同步. 线程编程首先要学习的三个函数如下: #include &l ...
- maven 添加自己下载的jar包到本地仓库
1.在pom文件中添加依赖,其中groupId等变量都自拟. 例如: 2.在命令行执行以下命令,提示build success即表示安装成功. mvn install:install-file -Dg ...
- ffmpeg使用笔记
1.从mp4中提取h264:ffmpeg -i 264.mp4 -codec copy -bsf h264_mp4toannexb -f h264 output.h2642.从mp4中提取hevc:f ...
- php curl 登陆百度贴吧(经历记录)
这两天,因为公司需要,所以研究了一下百度文库的登陆方案.因为账号是购买的,只有一部分cookie值,所以不能通过正常的渠道登陆,所以只有通过curl模拟直接进行后台登陆.那么,问题来了.按照人家说的, ...
- 总结Verilog中always语句的使用
always语句包括的所有行为语句构成了一个always语句块.该always语句块从仿真0时刻开始执行其中的行为语句:最后一条执行完成后,再开始执行其中的第一条语句,如此往复循环,直到整个仿真结束. ...
- JQuery中的load()、$.get()和$.post()详解 (转)
load() 1.载入HTML文档 load()方法是jQuery中最为简单和常用的Ajax方法,能载入远程HTML代码并插入DOM中. 它的结构为: load(url [,data][,callba ...
- cf987f AND Graph
#include <iostream> #include <cstdio> using namespace std; int n, uu, m; bool a[4500005] ...