session應用之購物車的實現


現在網頁中的購物車功能的實現都是依賴的數據庫,相比之下,以前是依賴服務器端的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");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM