<?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」得到