//
購物車的開發(fā)思路有很多種,一種是建立購物車數(shù)據(jù)表,這樣的好處是商品加入購物車后如果不清除的話,商品永遠(yuǎn)停在購物車?yán)锩?,?dāng)然缺點(diǎn)就是會(huì)增加服
務(wù)器的負(fù)擔(dān)。當(dāng)然還有另外一種思路,就是不需要數(shù)據(jù)表,運(yùn)用session機(jī)制,購物商品用session存儲(chǔ)。這個(gè)的好處是可以減少服務(wù)器的負(fù)擔(dān),缺點(diǎn)
是如果加入購物車后不提交生成訂單的話,過一段時(shí)間session失效后,購物車會(huì)自動(dòng)清空。
我們今天介紹的是第二種開發(fā)方案
<?php
//首先我們會(huì)用到sesssion 開啟它
session_start();
/*
* 思路:$_SESSION['gwc'];
* 如果這個(gè)數(shù)組是空的那么表示我們還沒有購買任何的商品;
* 如果不是空的表示購物車?yán)锩嬉呀?jīng)有了商品;
* 我們首先來分析一下$_SESSION['gwc']這個(gè)數(shù)組的結(jié)構(gòu)
*
* print_r($_SESSION['gwc']);
*
* 結(jié)果:array(1=>4,4=>3,12=>1)
* 數(shù)組的下標(biāo)表示購買商品的id,值代表了購買商品的個(gè)數(shù)
*
* */
//獲得商品ID
$id=$_GET['id'];
//首先判斷購物車是不是空的,如果是空的表示購物車無商品,直接添加
if(!is_array($_SESSION['gwc'])){
$_SESSION['gwc'][$id]=1;
}else{
//如果不是數(shù)組說明已經(jīng)有了商品
//判斷在購物車的下標(biāo)當(dāng)中,是否已經(jīng)存在該ID所存的數(shù)量
//接收物品的ID檢查在不在購物車的下標(biāo)中
//我們使用函數(shù) array_keys 反轉(zhuǎn) 然后檢測在不在其中
if(in_array($id,array_keys($_SESSION['gwc']))){
//如果在里面那么我們就在它的基礎(chǔ)上加一
$_SESSION['gwc'][$id]+=1;
}else{
//如果不在里面那么我們就設(shè)定這個(gè)物品為1
$_SESSION['gwc'][$id]=1;
}
}
//然后我們鏈接數(shù)據(jù)庫主要是為了遍歷我們購物車中的物品的信息,圖片價(jià)格等
$conn=mysql_connect('localhost','root','root123456');
if(mysql_errno()){
mysql_error();
exit;
}
mysql_select_db('testdb');
mysql_set_charset('utf8');
echo '<table width="100%" border="1">';
$total=0;
//將數(shù)組中的 購買商品的id ,數(shù)量遍歷出來
foreach($_SESSION['gwc'] as $key=>$value){
//去服務(wù)器端查詢商品信息
$sql="select name,price,pic from shop_gwc where id=$key";
$result=mysql_query($sql);
//因?yàn)橐粋€(gè)ID只能對應(yīng)一個(gè)商品,上面已經(jīng)有循環(huán)了,直接讀出對應(yīng)的信息來即可
$row=mysql_fetch_assoc($result);
echo '<tr>';
echo '<td>名稱'.$row['name'].'</td>';
echo '<td>單價(jià)'.$row['price'].'</td>';
echo '<td>數(shù)量'.$value.'</td>';
echo '<td>圖片<img src="img/'.$row['pic'].' "/></td>';
//計(jì)算單個(gè)商品總價(jià)
echo '<td>共計(jì)'.($value*$row['price']).'</td>';
echo '<td><a href="del.php?id='.$key.'">刪除商品</a></td>';
echo '</tr>';
//計(jì)算所有商品總價(jià)
$total+=$value*$row['price'];
}
echo '<tr><td colspan="5">總價(jià)為'.$total.'</td></tr>';
echo '</table>';
/*
* 購物車的id我們使用unset 來銷毀相應(yīng)的
*
*
*/ $id=$_GET['id'];
unset($_SESSION['gwc'][$id]);
?>
然成科技是獲得云南省科技廳、省財(cái)政廳、省稅務(wù)局等機(jī)構(gòu)認(rèn)定的高新技術(shù)企業(yè)。公司定位于高端網(wǎng)站設(shè)計(jì)、系統(tǒng)開發(fā)、APP開發(fā)、微信公眾號、微信小程序開發(fā)。擁有多個(gè)軟著權(quán)!