zoukankan      html  css  js  c++  java
  • 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");
  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/du892294464/p/6828055.html
Copyright © 2011-2022 走看看