購物車頁,也是此程序最量要的頁,涉及修改商品數量、清空購物車、刪除某一商品等功能,由于代碼多,所以分開多頁來學習。
在cart根目錄里建立shopping_car.php頁。
測試頁代碼:
~~~
<?php
echo 'Hello shopping_car.php';
?>
~~~
然后,點首頁的"購買"按鈕,網頁迅速跳轉到shopping_car.php,顯示內容:
”Hello shopping_car.php“,測試成功。
看似跳轉一頁很簡單,其實后邊還執行過了buy.php頁的代碼,也說明buy.php代碼沒問題。其實,筆者在寫buy.php頁時,也反復用了var_dump()進行了測試,只不過正式用時,將測試代碼去掉了,以免多余代碼影響學習。
下面開始寫正式代碼:
~~~
<?php
//啟動session功能.
session_start();
//設置網頁字符集.
header("Content-type:text/html;charset=utf8");
//導入smarty配置文件.
require('config.php');
//導入數據連接文件.
require('conn.php');
//判斷goodsid的session變量是否設置.
if(isset($_SESSION['goodsid']) && isset($_SESSION['goodsnum'])){
//如果已設置,則分解成數組.
$array=explode('@',$_SESSION['goodsid']);
//goodsnum的session數組必須同時分解.
$arraynum=explode('@',$_SESSION['goodsnum']);
}else{
$array=array();
}//if end.
//定義價格變量
$totalprice=0;
//創建準備存儲記錄的數組.
$arrayinfo=array();
//根據$array中的元素,從表中讀取相關記錄.
for($i=0;$i<count($array);$i++){
if($array[$i]!=''){
//設置sql語句.
$sql='select * from goods where id='.$array[$i];
//執行查詢.
$query=mysqli_query($link,$sql);
//讀取數據.
$info=mysqli_fetch_array($query);
//將arraynum[]數組相對應的值也存入arrayinfo.
array_push($info,$arraynum[$i]);
//將整理好的$info數組給總數組.
array_push($arrayinfo,$info);
//統計商品價格.
$totalprice+=$info['price']*$arraynum[$i];
}//if end.
}//for end.
var_dump($arrayinfo);
?>
~~~
主要代碼解析:
session_start()、require()、explode()、mydqli_query()等函數解釋參考前面章節。
array_push(數組,新元素),此函數向第一個參數的數組尾部添加一個或多個元素(入棧)
* * * * *
測試運行,結果如下:
~~~
array (size=1)
0 =>
array (size=11)
0 => string '3' (length=1)
'id' => string '3' (length=1)
1 => string '筆記本TN001' (length=14)
'name' => string '筆記本TN001' (length=14)
2 => string '戴爾' (length=6)
'brand' => string '戴爾' (length=6)
3 => string '7788.50' (length=7)
'price' => string '7788.50' (length=7)
4 => string '100' (length=3)
'count' => string '100' (length=3)
5 => string '1' (length=1)
~~~
測試成功。
下一節,講購物車模板。