1. 程式人生 > >session應用之購物車的實現

session應用之購物車的實現

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應用之購物車的實現