添加商品到购物车add_to_cart.php(学生笔记)
<?php
session_start();//启动session $goods_id = $_POST['goods_id'];//获取商品id $number = $_POST['num'];//获取商品数量 if(empty($_SESSION["gwc"]))
{ //1.购物车是空的,第一次点击添加购物车 $arr[$goods_id] =array(
'goods_id' => $goods_id, 'num' => $number ); $_SESSION["gwc"]=$arr; }
else//_1 购物车不是空的
{ //判断购物车中是否存在该商品 $arr = $_SESSION["gwc"]; //先存一下 $chuxian = false; //2.查询购物车中是否有该商品,K是商品id,做个标记
foreach($arr as $k=> $v)
{ if($k==$goods_id)
{ $chuxian = true; } } // 3.购物车中已有该商品,则只需将它的数量增加
if($chuxian)
{ $arr[$goods_id]['num']+=$number; $_SESSION["gwc"] = $arr;
}
else
{ //_3.如果购物车中没有该商品
$arr[$goods_id] = array(
'goods_id' => $goods_id,
'num' => $number
);
$_SESSION["gwc"] = $arr;
// print_r($arr);
// die();
} } echo "OK";
// echo '<script language="JavaScript">;
// alert("加购成功!");location.href="#";</script>;'; // exit; // var_dump($_SESSION); // die(); ?>
一.首先要明白添加一件商品到购物车的状态有3种情况。
1.还没有购物车。
2.有购物车了,但加入购物车的商品是购物车没有的。
3.有购车了,加入购物车的商品在购物车也已经有了,那就值增加它在购物车的数量。
二.加入购物车页面需要传2个参数到php,商品id和加购的商品数量。在php前面几行就是接受那2个参数。
三.要开通session。第一行的seesion_start();否则存进session的信息是不起作用的。虽然在后面能var_dump()出来。但在购物车展示商品页面var_dump的session还是之前的。
四.这么多项的商品如何存进session?其实就是对session数组的增删改查操作。
session就是一个数组。只是它能跨页面访问。存进session,最终目的还是为了在别的页面能再次用到它。比如上面的代码把商品信息存到$_SESSION['gwc']中,就是为了在购物车页面能够再次获取$_SESSION['gwc'],利用foreach循环把你存到$_SESSION['gwc']的商品遍历出来。
五.至于
$arr[$goods_id] =array(
'goods_id' => $goods_id,
'num' => $number
);
这句代码为什么里面只存或要存这2个参数,这也是根据购物车页面展示时的要求来的,数量不难理解,你加购了几件就展示几件。id又到底是为什么要存进去,购物车展示的业务逻辑就是,根据商品id,然后从数据库中该
id 的所有商品信息。即执行“select* form goods where id = 商品id”获得
添加商品到购物车add_to_cart.php(学生笔记)的更多相关文章
- jQuery 动画之 添加商品到购物车
前台页面 <link href="MyCar.css" rel="stylesheet" /> <script src="../jq ...
- AI学习吧-购物车-添加商品接口
create接口流程 需求:向购物车添加商品 流程:写shopping_cart路由--->写ShoppingCart视图函数--->使用Authuser校验用户是否登录--->首先 ...
- Flutter实战视频-移动电商-51.购物车_Provide中添加商品
51.购物车_Provide中添加商品 新加provide的cart.dart页面 引入三个文件.开始写provide类.provide需要用with 进行混入 从prefs里面获取到数据,判断有没有 ...
- 淘淘商城项目_同步索引库问题分析 + ActiveMQ介绍/安装/使用 + ActiveMQ整合spring + 使用ActiveMQ实现添加商品后同步索引库_匠心笔记
文章目录 1.同步索引库问题分析 2.ActiveM的介绍 2.1.什么是ActiveMQ 2.2.ActiveMQ的消息形式 3.ActiveMQ的安装 3.1.安装环境 3.2.安装步骤 4.Ac ...
- IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结
添加商品和商品名小项目(使用xib文件终结版) 小贴士:博文末尾有项目源码在百度云备份的下载链接. xib相关知识点总结 01-基本使用 一开始使用xib的时候,如果要使用自定义view的代码,就需要 ...
- ssh整合问题总结--在添加商品模块实现图片(文件)的上传
今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模块中,有一个添加商品,需要将磁盘上的图片上传到tomcat保存图片的指定目录中: 完成这个功能需要两个步,第 ...
- GZFramwork快速开发框架演练之会员系统(四)添加商品管理
1.1:创建表结构 新建三张商品关联的表,表模型如下: 创建SQL语句略 1.2:生成表Model(生成方法见上一节) 1.3:生成tb_ProductType的单结构界面然后添加到项目中 1.4:修 ...
- IOS之UI--小实例项目--添加商品和商品名(纯代码终结版)
前言:这个小实例项目是完完全全以MJ视频传授的优化方案一步一个思路从零开始敲出代码的,而且每一步都有思路,都有逻辑所以然.敲代码讲究思路,我个人不建议记忆太多东西,反正我记性很差的. 小贴士:文章末尾 ...
- 移动商城第八篇【添加商品之基本属性和大字段数据(FCK文本编辑器)】
添加商品 修改对应的超链接url,controller转发到对应的JSP页面 <a href="${path}/item/toAddItem.do" class=" ...
随机推荐
- 构建 CDN 分发网络架构简析
构建 CDN 分发网络架构 CDN的基本目的:1.通过本地缓存实现网站的访问速度的提升 CDN的关键点:CNAME在域名解析:split智能分发,引流到最近缓存节点
- WPF引用WinForm控件
前言:在WPF开发当中由于DataGrid控件实现业务未达到非常理想的效果,我决定使用WinForm中的DataGridView来实现业务. 在XAML中加入以下命名空间: xmlns:wf=&quo ...
- js获取当前时间的年月日时分秒以及时间的格式化
1.获取当前时间 var myDate = new Date(); 2.获取时间中的年月日时分秒 myDate.getYear(); // 获取当前年份(2位) myDate.getFullYear( ...
- Android 避免内存泄漏
什么是内存泄露? 就是该回收的内存由于种种原因没有被回收,还驻留在内存中. 内存泄露有什么影响? 可能一处小小的内存泄露就会导致整个应用卡顿,甚至崩溃. 例子说明: Toast.makeText(Ma ...
- Mac 停止redis服务
停止redis服务: redis-cli shutdown 开始redis服务: redis-server
- HttpRunner学习1--Windows&Linux安装httprunner
最近在学习HttpRunner,这是一款开源的接口测试框架,可用于HTTP(S)协议的接口测试.通过该框架,我们只需维护一份 YAML/JSON 脚本,即可轻松的进行接口自动化. 更多的介绍,大家可以 ...
- Postman文件上传
1:请求Url 2:选择消息体 3:选择表单参数 4:填写参数KEY-VALUE,记得打钩 5:Send发送请求
- jQuery总结02_jq的dom操作+属性操作
一:JQuery知识点 *:JQuery的dom操作 *:获取节点.给节点添加内容 *:动态创建dom节点 比如动态创建表格等,在js里面进行完成. *删除节点 这里面的删除就是将其放在了一个地方,并 ...
- node-sass 埋坑记录
node-sass 埋坑记录 背景 原有项目.环境: node:v8.16.2 npm:v6.4.1 node-sass::v4.8.0 Angular-CLI:v6.x 本机没有安装 Visual ...
- ABAP分享二 ALV标准范例DEMO汇总
SAP软件针对ALV的使用方法,提供了ALV标准demo程序: sap提供的ALV标准demo程序,只是展示简单的数据,用function ALV即可,若有复杂的增删改查操作 建议使用OO ALV,下 ...