<?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种状况。php
1.尚未购物车。数据库
2.有购物车了,但加入购物车的商品是购物车没有的。数组
3.有购车了,加入购物车的商品在购物车也已经有了,那就值增长它在购物车的数量。session
二.加入购物车页面须要传2个参数到php,商品id和加购的商品数量。在php前面几行就是接受那2个参数。spa
三.要开通session。第一行的seesion_start();不然存进session的信息是不起做用的。虽然在后面能var_dump()出来。但在购物车展现商品页面var_dump的session仍是以前的。orm
四.这么多项的商品如何存进session?其实就是对session数组的增删改查操做。blog
session就是一个数组。只是它能跨页面访问。存进session,最终目的仍是为了在别的页面能再次用到它。好比上面的代码把商品信息存到$_SESSION['gwc']中,就是为了在购物车页面可以再次获取$_SESSION['gwc'],利用foreach循环把你存到$_SESSION['gwc']的商品遍历出来。ip
五.至于it
$arr[$goods_id] =array(
'goods_id' => $goods_id,
'num' => $number
);这句代码为何里面只存或要存这2个参数,这也是根据购物车页面展现时的要求来的,数量不难理解,你加购了几件就展现几件。id又究竟是为何要存进去,购物车展现的业务逻辑就是,根据商品id,而后从数据库中该id 的全部商品信息。即执行“select* form goods where id = 商品id”得到