php实现购物车 redis,redis 哈希数据类型简单操作(实现购物车案例)

这里不累赘如何安装redis和php  redis扩展,主要熟悉调用redis哈希数据类型

如图

AAffA0nNPuCLAAAAAElFTkSuQmCC

简单方法操作如下

1:hSet

AAffA0nNPuCLAAAAAElFTkSuQmCC

2:hGet

AAffA0nNPuCLAAAAAElFTkSuQmCC

4:hDel

AAffA0nNPuCLAAAAAElFTkSuQmCC

5:hGetAll

AAffA0nNPuCLAAAAAElFTkSuQmCC

4:hExists

AAffA0nNPuCLAAAAAElFTkSuQmCC

5:hIncrBy

AAffA0nNPuCLAAAAAElFTkSuQmCC

简单购物车实现

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

namespaceHome\Controller;

useThink\Controller;

useOrg\Net\Http;

useThink\Cache\Driver\Redis;

classIndexControllerextendsController

{

private$redis_obj=null;

public function__construct()

{

$this->redis_obj=newRedis();

}

/**

*@file:判断购物车是否存在这减商品

*@param$user_id

*@param$goods_id

*/

public functiongoods_is_exist($user_id,$goods_id)

{

$r1=$this->redis_obj->hExists($user_id,$goods_id);

return$r1;

}

/**

*@file:增加购物车商品

*

*/

public functionadd_goods()

{

$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;

$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;

$exist=$this->goods_is_exist($user_id,$goods_id);

if(!empty($user_id) &&$goods_id) {

//不存在 增加商品

if(!$exist) {

$add_return=$this->redis_obj->hSet($user_id,$goods_id,1);

if($add_return) {

$this->ajaxReturn(array('code'=>0,'msg'=>'success'));

}else{

$this->ajaxReturn(array('code'=>1,'msg'=>'error'));

}

}elseif($exist) {

//存在的商品增加1

$add_exist_result=$this->redis_obj->hIncrBy($user_id,$goods_id,1);

if($add_exist_result) {

$this->ajaxReturn(array('code'=>0,'msg'=>'success','1'=>$add_exist_result));

}else{

$this->ajaxReturn(array('code'=>1,'msg'=>'error'));

}

}

}

}

//减少购物车的商品

public functionreduce_goods()

{

$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;

$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;

if(!empty($user_id) &&$goods_id) {

$exist=$this->goods_is_exist($user_id,$goods_id);

//不存在

if(!$exist) {

$this->ajaxReturn(array('code'=>1,'msg'=>'goods is not exist '));

}elseif($exist) {

$val=$this->redis_obj->hGet($user_id,$goods_id);

if($val==1) {//购物车商品只有一件的时候 减少到0就是删除

$del_result=$this->redis_obj->hDel($user_id,$goods_id);

if($del_result==1) {

$this->ajaxReturn(array('code'=>0,'msg'=>'success','num'=>0));

}

}elseif($val>1) {

$new_value=$this->redis_obj->hIncrBy($user_id,$goods_id,-1);

if($new_value>0) {

$this->ajaxReturn(array('code'=>0,'msg'=>'success','num'=>$new_value));

}else{

$this->ajaxReturn(array('code'=>1,'msg'=>'error'));

}

}

}

}else{

$this->ajaxReturn(array('code'=>1,'msg'=>'param is empty'));

}

}

//移除商品

public functionrm_goods()

{

$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;

$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;

if(!empty($user_id) && !empty($goods_id)) {

$arr= explode(',',$goods_id);

array_unshift($arr,$user_id);

$rm_result= call_user_func_array(array($this->redis_obj,"hDel"),$arr);

if($rm_result>=0) {

$this->ajaxReturn(array('code'=>0,'msg'=>'remove success'));

}

}else{

$this->ajaxReturn(array('code'=>1,'msg'=>'param is empty'));

}

}

//购物车列表

public functioncart_list()

{

$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;

if(!empty($user_id)) {

$goods_list=$this->redis_obj->hGetAll($user_id);

$this->ajaxReturn(array('code'=>0,'list'=>$goods_list));

}else{

$this->ajaxReturn(array('code'=>1,'msg'=>'param is empty'));

}

}

//设置一个商品的数量

public functionedit_goods_num()

{

}

}

作者:MacLin

链接:https://www.jianshu.com/p/c5d77c3b7cce

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写在25岁

虽然到25岁,大家会告诉你女人容颜开始衰退,要多加注意保养,要学会化妆,要会穿高跟鞋。虽然到25岁,大家告诉你要赶紧结婚生子,否则女人开始贬值。虽然到25岁,大家会告诉你工作不要那么拼&#xf…

matlab中D A1在哪,A1=d(1:15,:);A2=d(16:30,:);A3=

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼A1d(1:15,:);A2d(16:30,:);A3d(31:45,:);A4d(46:60,:);A5d(61:75,:);A6d(76:90,:);B1d(91:105,:);B2d(106:120,:);B3d(121:135,:);B4d(136:150,:);B5d(151:165,:);B6d(166:180,:);B7d(181:195,:);B8d(196:210,:);B9d(211:225,:);C1…

使用block的好处

1 使用block 可以轻松地绑定各处代码块,使用delete 结构是分散的,不利于变量之间传值,不像block可以随意地获取变量值。 2.使用block可以方便执行异步代码,作为异步处理回调。 In terms of code readability, the block makes it …

python mysql ssl,python – 在SQLAlchemy中使用SSL

我最近改变了我的项目使用SQLAlchemy并且我的项目运行正常,它使用了外部MySQL服务器.现在我正在尝试使用具有SSL CA的不同MySQL服务器,并且它不会连接.(它确实使用MySQL Workbench进行连接,因此证书应该没问题)我正在使用以下代码:ssl_args {ssl: {ca: ca_path}}en…

Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法

Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 在添加完之后&#xff0c;可以使用 $.parser.parse();这个方法进行处理:(1) 对整个页面重新渲染: $.parser.parse();  (2) 渲染某个特定的组件:var targetObj $("<input namemydate classeasyui-date…

ftp完成版本更新php,php – 将开发团队从FTP转换为版本控制系统

问题&#xff1a;>你(他们)从来没有遇到过灾难,你(他们)需要恢复到以前版本的网站,但却不能因为他们破坏了它&#xff1f;>他们是否使用临时Web服务器来测试更改&#xff1f;>当然,如果没有某些测试,他们不会修改生产服务器中的代码&#xff1f;我怀疑第一个的答案是“…

IOS-NSDateFormatter使用介绍

IOS-NSDateFormatter使用介绍 NSDateFormatter的使用&#xff1a; NSDate *nowDate [[NSDate alloc] init];NSDateFormatter *dateFormatter [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:"yyyy-mm"];NSString *time [dateFormatter stringFromD…

php scsi平台,三大SCSI Target平台PK:让服务器化身SAN

就服务器而言&#xff0c;从虚拟化平台到数据库应用的许多功能&#xff0c;都需要有SAN存储设备的支持&#xff0c;但是对于模拟测试、教学之类的应用来说&#xff0c;受到成本限制采购SAN存储设备便有所困难。特别是企业&#xff0c;都不会仅仅为了测试等常态使用的用途&#…

[BZOJ 1012] [JSOI 2008] 最大数maxnumber

1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 5094 Solved: 2276[Submit][Status][Discuss]Description 现在请求你维护一个数列&#xff0c;要求提供以下两种操作&#xff1a; 1、 查询操作。语法&#xff1a;Q L 功能&#xff1a;查询当…

php 数组元素往后移动,php 二维数组 元素移动

[已关闭问题]关闭于 2014-11-20 16:02二维数组元素如何实现&#xff0c;满足一定的条件&#xff0c;跳到下下个元素&#xff0c;不满足的话&#xff0c;顺序执行呢&#xff1f;比如&#xff1a;header("Content-type:text/html;charsetutf-8");$arr array(array(id&…

RequireJS

RequireJS 2.0 正式发布 RequireJS入门&#xff08;一&#xff09; RequireJS入门&#xff08;二&#xff09; RequireJS入门&#xff08;三&#xff09; RequireJS进阶&#xff08;一&#xff09; RequireJS进阶&#xff08;二&#xff09; RequireJS进阶&#xff08;三&…

帝国cms仿php自媒体新闻系统,帝国CMS仿《砍柴网》源码 专栏自媒体投稿资讯文章新闻网站模板...

在开发妹入手了一套模版&#xff0c;测试效果真心不错这里发出来供大家参考研究源码简介一家拥有全球视野的前沿科技媒体&#xff0c;我们始终秉承观点独到、全面深入、有料有趣的宗旨&#xff0c;在科技与人文之间寻找商业新价值&#xff0c;坚持以人文的视角解读科技&#xf…

【Win10】UAP/UWP/通用 开发之 x:Bind

【Win10】UAP/UWP/通用 开发之 x:Bind [Some information relates to pre-released product which may be substantially modified before its commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.] […

root 授予oracle权限,oracle – 列出具有root(管理)权限的用户

以下是您查找用户权限的方法&#xff1a;selectlpad( , 2*level) || granted_role "User, his roles and privileges"from(/* THE USERS */selectnull grantee,username granted_rolefromdba_users/* THE ROLES TO ROLES RELATIONS */unionselectgrantee,granted_rol…

(转)基于libRTMP的流媒体直播之 AAC、H264 推送

参考&#xff1a; 1&#xff0c;基于libRTMP的流媒体直播之 AAC、H264 推送 http://billhoo.blog.51cto.com/2337751/1557646转载于:https://www.cnblogs.com/tangxiacun/p/4536904.html

oracle outln用户,Oracle用户解锁

首先先连接上SQL*Plus: Release 12.1.0.2.0 Production on 星期四 2月 12 15:40:422015Copyright (c) 1982, 2014, Oracle. All rights reserved.请输入用户名: system输入口令:上次成功登录时间: 星期四 2月 12 2015 10:26:40 08:00连接到:Oracle Database 12c Enterprise …

Android 自定义属性(attrs.xml,TypedArray)

做Android布局是件很享受的事&#xff0c;这得益于他良好的xml方式。使用xml可以快速有效的为软件定义界面。可是有时候我们总感觉官方定义的一些基本组 件不够用&#xff0c;自定义组件就不可避免了。那么如何才能做到像官方提供的那些组件一样用xml来定义他的属性呢&#xff…

oracle的基本概念,oracle的基本概念

SQL语句&#xff1a;1、数据查询语句 SELECT2、数据定义语句 DDL 定义表、视图、索引3、数据操纵语句 DML INSERT、UPDATE、DELETE4、数据控制语句 DCL基本的数据类型&#xff1a;number(p,s) --> p个数字&#xff0c;s是p中小数点后的数字位数smal…

移动端单位解析

手机端开发单位到底用什么&#xff1f; 目前有3种&#xff0c;px&#xff0c;em &#xff0c;rem PC端大部份是用px单位&#xff0c;小部分用em单位&#xff0c;而移动端&#xff0c;请全部用rem单位吧。目前大部份设备&#xff0c;包括但不限于iOS 5、Android 2.3、Window Pho…

oracle fiscal year,Version 0 is not defined for fiscal year 2007.

最初由 itpuber.net 发布[B]select version "0" maintain "setting for each fiscal year", try it [/B]but when i maintain versionActivation of the indicator is not permittedMessage no. KT253DiagnosisYou activated an indicator (Plan, Actual, …