session應用之購物車的實現
阿新 • • 發佈:2017-05-09
har head 一維數組 empty img con 維數 htm http
現在網頁中的購物車功能的實現都是依賴的數據庫,相比之下,以前是依賴服務器端的session來儲存。今天來講一下session實現購物車的邏輯。
用一張水果信息表為例子來演示。
1.首先我們寫出來水果列表
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>無標題文檔</title> 6 </head> 7 8 <body> 9 <h1>水果列表</h1> 10 11 <?php 12 session_start(); 13 14 ?> 15 16 <table width="50%" border="1" cellpadding="0" cellspacing="0"> 17 <tr> 18 <td>代號</td> 19 <td>名稱</td> 20 <td>單價</td> 21 <td>產地</td> 22 <td>庫存</td> 23 <td>操作</td> 24 </tr> 25 26 <?php 27 require "DataBase.class.php"; 28 $db = new DateBase(); 29 $sql = "select * from fruit";30 $arr = $db->query($sql); 31 foreach($arr as $v) 32 { 33 echo "<tr> 34 <td>{$v[0]}</td> 35 <td>{$v[1]}</td> 36 <td>{$v[2]}</td> 37 <td>{$v[3]}</td> 38 <td>{$v[4]}</td> 39 <td><a href=‘gwc_chuli.php?ids={$v[0]}‘>加入購物車</a></td> 40 </tr>"; 41 } 42 ?> 43 </table> 44 45 46 </body> 47 </html>
看一下效果圖
2.下面,我們來實現一下處理購物車的頁面
1 <?php 2 session_start(); 3 //取到傳過來的主鍵值,並且添加到購物車的SESSION裏面 4 $ids = $_GET["ids"]; 5 6 7 8 //如果是第一次添加購物車,造一個二維數組存到SESSION裏面 9 //如果不是第一次添加,有兩種情況 10 //1.如果該商品購物車裏面不存在,造一個一維數組扔到二維裏面 11 //2.如果該商品在購物車存在,讓數量加1 12 13 if(empty($_SESSION["gwc"])) 14 { 15 //如果是第一次添加購物車,造一個二維數組存到SESSION裏面 16 $arr = array( 17 array($ids,1) 18 ); 19 20 $_SESSION["gwc"] = $arr; 21 } 22 else 23 { 24 $arr = $_SESSION["gwc"]; 25 $bs = false; //是否出現 26 foreach($arr as $v) 27 { 28 if($v[0]==$ids) 29 { 30 $bs = true; 31 } 32 } 33 34 if($bs) 35 { 36 //2.如果該商品在購物車存在,讓數量加1 37 foreach($arr as $k=>$v) 38 { 39 if($v[0] == $ids) 40 { 41 $arr[$k][1]++; //這裏我們用一個變量K來取值和賦值,因為只是取到的值給了$v來代表數組的值,其實數組的值並不會因為$v改變二改變 42 } 43 } 44 $_SESSION["gwc"] = $arr; 45 46 } 47 else 48 { 49 //1.如果該商品購物車裏面不存在,造一個一維數組扔到二維裏面 50 $attr = array($ids,1); 51 $arr[] = $attr; 52 $_SESSION["gwc"] = $arr; 53 } 54 } 55 56 header("location:gwc_list.php");//回到列表的界面
3.寫出查看購物車的界面
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>無標題文檔</title> 6 </head> 7 8 <body> 9 <h1>查看購物車</h1> 10 <table width="100%" border="1" cellpadding="0" cellspacing="0"> 11 <tr> 12 <td>代號</td> 13 <td>名稱</td> 14 <td>單價</td> 15 <td>數量</td> 16 <td>操作</td> 17 </tr> 18 19 <?php 20 session_start(); 21 $arr = $_SESSION["gwc"]; 22 require "DataBase.class.php"; 23 $db = new DateBase(); 24 25 $sum = 0; 26 foreach($arr as $k=>$v) 27 { 28 $v[0]; $v[1]; 29 $sql = "select * from fruit where ids=‘{$v[0]}‘"; 30 $af = $db->query($sql); 31 32 echo "<tr> 33 <td>{$v[0]}</td> 34 <td>{$af[0][1]}</td> 35 <td>{$af[0][2]}</td> 36 <td>{$v[1]}</td> 37 <td><a href=‘gwc_del.php?sy={$k}‘>刪除</a></td> 38 </tr>"; 39 $sum = $sum +$v[1]*$af[0][2]; 40 } 41 42 ?> 43 44 </table> 45 <div> 46 <?php 47 $gs = count($arr);//購物車裏面有幾個商品 48 49 echo "該購物車裏面總共有{$gs}種商品,商品的總價為:{$sum}元"; 50 51 ?> 52 </div> 53 </body> 54 </html>
看看效果如下
4.最後一個頁面,刪除
1 <?php 2 session_start(); 3 $sy = $_GET["sy"]; 4 5 //如果該水果數量大於1,減1 6 //如果該水果數量等於1 移除 7 $arr = $_SESSION["gwc"]; 8 9 if($arr[$sy][1]>1) 10 { 11 //如果該水果數量大於1,減1 12 $arr[$sy][1]--; 13 } 14 else 15 { 16 unset($arr[$sy]); 17 $arr = array_values($arr); 18 } 19 20 $_SESSION["gwc"] = $arr; 21 header("location:gwc_chakan.php");
session應用之購物車的實現