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");
时间: 2024-10-14 12:58:12

session应用之购物车的实现的相关文章

[网络收集]利用Session对象实现购物车

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=338GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com //shopcart.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.

基于session的简易购物车引发的问题

一.功能描述:  页面如下所示: 运行报错: java.io.FileNotFoundException: E:\apache-tomcat-8.0.37\work\Catalina\localhost\20161013ShoppingCart\SESSIONS.ser (系统找不到指定的路径.)at java.io.FileOutputStream.open0(Native Method)at java.io.FileOutputStream.open(FileOutputStream.jav

使用session技术来实现网上商城购物车的功能

首先.简单的了解session和cookie的区别: 一.session和cookie的区别: session是把用户的首写到用户独占的session中(服务器端) cookie是把用户的数据写给用户的浏览器. session对象由服务器创建,开发人员可以调用request对象的getsession方法得到session对象. 首先写页面代码,仍然借助于商品浏览记录来写: 1.jsp购买页面代码如下: <%@ page language="java" contentType=&q

session实现购物车

为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购物车系统. 为了实现用户移动及pc端的适应,用媒体查询实现了响应式效果(文章最后实现). 程序效果 登录界面: 添加购物车界面(购买数量和总价会在界面动态显示):  可以通过在文本框里输入数字来控制购买数量, 点击删除删除整行,点击清空清所有数据. 不可在文本框里输入小于零或者其他违法字符: 提交订

PHP 购物车 session(非框架)

这是我的一次面试中的面试题,简单写商城的购物车功能,要求是: 1.自己写简单的前台 2.用户登录前能用购物车 3.不可以用cookie 暂时了解到的解决方法有三个: 1.cookie 2.session 3.数据库 该购物车的主要逻辑是,用session来实现识别不同的用户各自的购物车,以便用户登录后保存的是自己的购物车.流程图如下: 各文件的代码如下: shop_list.php <?php /* shop_list.php * 该文件主要功能为商品展示 * 并且把用户需要商品加入购物车 */

PHP实现商城购物车类(SESSION+单例模式 )(亲测)

1 <?php 2 if(!isset($_SESSION)) 3 session_start(); 4 //分析购物车 5 //整站范围内,购物车全局有效 6 //技术 : session购物车 + 单例模式 7 //增删商品,判断商品是否存在 8 //查询商品种类,数量,查询总金额,返回购物车所有商品 9 //某商品数量+1 -1 10 class CartTool{ 11 private static $ins = null; //实例保存 12 private $items = arra

Session和Cookie实现购物车

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=342GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 使用Session和Cookie实现购物车的比较   购物车相当于现实中超市的购物车,不同的是一个是实体车,一个是虚拟车而已.用户可以在购物网站的不同页面之间跳转,以选购自己喜爱的商品,点击购买时,该商品就自动保存到你的购物车中,重复选购后,最后将选中的所有商品放在购物车中统一到付

java web 开发 购物车功能的实现

为了方便自己以后复习,所以写的比较仔细,记录下自己的成长..... 既然是做购物车,那么前提条件是首先需要一系列商品,也就是要建一个实体,这里建了一个商品表. 通过查询在浏览器上显示 基本显示已经做好了,现在进入我们的重头戏,Servlet 点击放入购物车时,将访问Servlet 购物车代码 1 package com.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util

JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解

Servlet的缺点 开发人员要十分熟悉JAVA 不利于页面调试和维护(修改,重新编译) 很难利用网页设计工具进行页面设计(HTML内容导入到servlet中,用PrintWriter的对象进行输出) JSP简介 JSP(Java Server Pages) 与Java Servlet一样,是在服务器端执行的,不同的是JSP先由服务器编译部署成Servlet执行. JSP技术的企业最佳实践(生成HTML内容) 新的JSP2.0规范版本包括新的功能(EL表达式,新增的Simple Tag和Tag