Information for details

PHP商城開發之購物車的使用

北京赛车pk10 www.hiolt.com

購物車的開發思路有很多種,一種是建立購物車數據表,這樣的好處是商品加入購物車后如果不清除的話,商品永遠停在購物車里面,當然缺點就是會增加服 務器的負擔。當然還有另外一種思路,就是不需要數據表,運用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開發、微信公眾號、北京赛车pk10。擁有多個軟著權!


  • {ganrao}