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