一、加入购物车

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. 微信订阅号 获取用户基本信息,登录及 php

    <?php //echo file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_cr ...

  2. jquery如何获取对应表单元素?

    问题描述:我页面中有这样多个表单,我都是这个定义的,当我点击确定按钮时,此时能够获得相对应的表单对象,我该怎么获取到他的两个值呢? 解决方案: 页面元素 <form id="form1 ...

  3. 数据分析处理库Pandas——字符串操作

    字符串小写 字符串大写 字符串长度 去掉字符串中的空格 去掉字符串中的左空格 去掉字符串中的右空格 字符串替换 按字符串切割 字符串是否包含在另一个字符串中

  4. 多线程编程之Apue3rd_Chapter11之互斥锁_读写锁_自旋锁

    学习了apue3rd的第11章,主要讲的是多线程编程.因为线程共享进程的资源比如堆和全局变量,多线程编程最重要的是,使用各种锁进行线程同步. 线程编程首先要学习的三个函数如下: #include &l ...

  5. maven 添加自己下载的jar包到本地仓库

    1.在pom文件中添加依赖,其中groupId等变量都自拟. 例如: 2.在命令行执行以下命令,提示build success即表示安装成功. mvn install:install-file -Dg ...

  6. ffmpeg使用笔记

    1.从mp4中提取h264:ffmpeg -i 264.mp4 -codec copy -bsf h264_mp4toannexb -f h264 output.h2642.从mp4中提取hevc:f ...

  7. php curl 登陆百度贴吧(经历记录)

    这两天,因为公司需要,所以研究了一下百度文库的登陆方案.因为账号是购买的,只有一部分cookie值,所以不能通过正常的渠道登陆,所以只有通过curl模拟直接进行后台登陆.那么,问题来了.按照人家说的, ...

  8. 总结Verilog中always语句的使用

    always语句包括的所有行为语句构成了一个always语句块.该always语句块从仿真0时刻开始执行其中的行为语句:最后一条执行完成后,再开始执行其中的第一条语句,如此往复循环,直到整个仿真结束. ...

  9. JQuery中的load()、$.get()和$.post()详解 (转)

    load() 1.载入HTML文档 load()方法是jQuery中最为简单和常用的Ajax方法,能载入远程HTML代码并插入DOM中. 它的结构为: load(url [,data][,callba ...

  10. cf987f AND Graph

    #include <iostream> #include <cstdio> using namespace std; int n, uu, m; bool a[4500005] ...