<?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(学生笔记)的更多相关文章

  1. jQuery 动画之 添加商品到购物车

    前台页面 <link href="MyCar.css" rel="stylesheet" /> <script src="../jq ...

  2. AI学习吧-购物车-添加商品接口

    create接口流程 需求:向购物车添加商品 流程:写shopping_cart路由--->写ShoppingCart视图函数--->使用Authuser校验用户是否登录--->首先 ...

  3. Flutter实战视频-移动电商-51.购物车_Provide中添加商品

    51.购物车_Provide中添加商品 新加provide的cart.dart页面 引入三个文件.开始写provide类.provide需要用with 进行混入 从prefs里面获取到数据,判断有没有 ...

  4. 淘淘商城项目_同步索引库问题分析 + ActiveMQ介绍/安装/使用 + ActiveMQ整合spring + 使用ActiveMQ实现添加商品后同步索引库_匠心笔记

    文章目录 1.同步索引库问题分析 2.ActiveM的介绍 2.1.什么是ActiveMQ 2.2.ActiveMQ的消息形式 3.ActiveMQ的安装 3.1.安装环境 3.2.安装步骤 4.Ac ...

  5. IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结

    添加商品和商品名小项目(使用xib文件终结版) 小贴士:博文末尾有项目源码在百度云备份的下载链接. xib相关知识点总结 01-基本使用 一开始使用xib的时候,如果要使用自定义view的代码,就需要 ...

  6. ssh整合问题总结--在添加商品模块实现图片(文件)的上传

    今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模块中,有一个添加商品,需要将磁盘上的图片上传到tomcat保存图片的指定目录中: 完成这个功能需要两个步,第 ...

  7. GZFramwork快速开发框架演练之会员系统(四)添加商品管理

    1.1:创建表结构 新建三张商品关联的表,表模型如下: 创建SQL语句略 1.2:生成表Model(生成方法见上一节) 1.3:生成tb_ProductType的单结构界面然后添加到项目中 1.4:修 ...

  8. IOS之UI--小实例项目--添加商品和商品名(纯代码终结版)

    前言:这个小实例项目是完完全全以MJ视频传授的优化方案一步一个思路从零开始敲出代码的,而且每一步都有思路,都有逻辑所以然.敲代码讲究思路,我个人不建议记忆太多东西,反正我记性很差的. 小贴士:文章末尾 ...

  9. 移动商城第八篇【添加商品之基本属性和大字段数据(FCK文本编辑器)】

    添加商品 修改对应的超链接url,controller转发到对应的JSP页面 <a href="${path}/item/toAddItem.do" class=" ...

随机推荐

  1. tp5.1 无限极分类前台展示

    商城前台的多级分类展示,如图所示,一般是三级.所以代码只组装到第三级. 数据库设计,共5个字段.level字段是方便用来显示级别的.pid是父级分类id,pid等于0说明它是一级分类.path字段,举 ...

  2. 欧洲杯在即英超yabo055红单介绍!沃特福德vs曼彻斯特联 沃特福德雪上加霜

    北京时间12月22日22:00,2019-20赛季英超联赛第18轮打响,沃特福德主场迎战曼彻斯特联.本场曼联作客一步步得到支持,球队有望客场赢下比赛. [基本面分析] 1.2019-20赛季英超联赛第 ...

  3. 搭建私人的云笔记_使用webdav服务

    搭建私人的云笔记_使用webdav服务 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-10-10. 手机上有很多云笔记app,大多支持云存储.可是把笔记放在别人的服务器上,总觉得不 ...

  4. kibana的query string syntax 笔记

    kibana的query string syntax 并不是 Query String Query,只能说类似.kibana的 Lucene query string syntax(es的query ...

  5. Spring Boot2.2.X中Tomcat配置 错误定制

    1: Tomcat定制 EmbeddedServletContainerCustomizer 已久废弃 按照下面的方式来处理 通过的类的配置 @Component public class Tomca ...

  6. 【CF528D】Fuzzy Search

    Problem Description 你有一个长度为 \(n\) 的串 \(S\),以及长度为 \(m\) 的串 \(T\). 现给定一个数 \(k\) ,我们说 \(T\) 在 \(S\) 的位置 ...

  7. python高阶函数——map/reduce

    python 内置了map()和reduce()函数 1.map()函数 map()函数接收两个参数,一个是函数,一个是可迭代对象Iterable,map将传入的函数依次作用于序列的每一个元素.并把结 ...

  8. 剑指offer笔记面试题7----重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如,输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列 ...

  9. vuex 精简demo解析

    1.store/index.js 文件 import Vue from 'vue' import Vuex from 'vuex' //使用vuex Vue.use(Vuex); //一个store ...

  10. s3c2440裸机-内存控制器(三、norflash初始化-时序设置)

    1.norflash与2440的硬件连接 2.初始化nor,配置nor时序 1.如图是S3C2440的内存控制器的可编程访问周期读写时序,里面的时间参数要根据外部设备的性能进行配置,这里先列出时间参数 ...