添加商品到购物车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=" ...
随机推荐
- Object类和异常
Object类(所有类的顶级父类) 今天说的两个方法: equals: 用于比较两个对象是否相同,它其实是使用两个对象的内存地址进行比较,底层默认使用的是==比较运算符来判断的. ...
- c++-继承的学习
继承的基本概念 继承和派生 继承概念 派生类的访问控制(继承三种方式.类三种访问控制.三看原则)综合训练 继承中的构造和析构 类型兼容性原则 继承中的构造和析构 继承中同名成员函数.成员变量处理方法 ...
- VS激活(Visual Studio)
以下是Visual Studio各个版本的激活密匙: Visual Studio Enterprise 企业版: BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio ...
- Python—解析HTML页面(HTMLParser)
HTMLParser类的定义及常用方法 类的定义 HTMLParser主要是用来解析HTML文件(包括HTML中无效的标记). 参数convert_charrefs表示是否将所有的字符引用自动转化为U ...
- luoguP4449 于神之怒加强版
题意 默认\(n\leqslant m\). 一波莫反后可得: \(\sum\limits_{T=1}^{n}\frac{n}{T}\frac{m}{T}\sum\limits_{d|T}d^k\mu ...
- 图像处理之C语言实现二维卷积
在用C语言实现图像处理中,经常要用到二维卷积的运算,这个在matlab中是非常容易实现的,只需要conv2()就OK啦,而且速度非常的快.但是在C语言中就需要四层的for循环来实现了. 首先二维卷积的 ...
- SpringBoot"热"部署解决方案
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 SpringBoot热部署两种方式 1.SpringLoader 插件 缺点: Java 代码做部署处理.但是对页面无能为力. 2.DevToo ...
- Java学习 1.1——(JVM介绍)Java为什么能够跨平台?
首先介绍一下Java的各个层级,先放一张图: 硬件,操作系统和操作系统接口:这三级不说大家都知道,操作系统有很多种,比如Windows,Linux.Windows又分为win7,win10,win x ...
- How to: Initialize Business Objects with Default Property Values in XPO 如何:在 XPO 中用默认属性值初始化业务对象
When designing business classes, a common task is to ensure that a newly created business object is ...
- 1.Ansible自动化管理工具
1.Ansible基本概述 Ansible是一个IT自动化的配置管理工具,自动化主要体现在Ansible集成了丰富模块,丰富的功能组件, 可以通过一个命令行完成一系列的操作.进而能减少我们重复性的工作 ...