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");
  • 相关阅读:
    第3次实践作业
    第2次实践作业
    第09组 团队Git现场编程实战
    第二次结对编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    课程设计第十四天
  • 原文地址:https://www.cnblogs.com/du892294464/p/6828055.html
Copyright © 2011-2022 走看看