手推车”功能的实现

导读:
  手推车”功能的实现
  “手推车”是在线购物网站(零售)中一项重要的功能。本文将要探讨用ASP程序实现“手推车”功能的技巧。要想在网站上实现“手推车”功能,有好几种方法,比如用Cookie、Session或者隐藏帧等。这几种方法各有优缺点,这里着重讨论用Cookie来实现“手推车”功能。
  用Cookie实现 “手推车”功能的优缺点
  Cookie是通过服务器端CGI、脚本或者客户端脚本把信息保存在客户机上的,以便为服务器或客户机再次使用这些信息提供方便。在j中有一些专门用来对Cookie进行操作的函数,如设置Cookie值的Setcookie(name,value),删除Cookie的Deletecookie(name)等(详细见源码)。使用Cookie来保存“手推车”信息的优点是,即使当用户不小心关闭了浏览器窗口,“手推车”中的信息也不会丢失,并且它占用很少的服务器端资源,缺点是必须要求用户端浏览器支持Cookie并且打开它。
  “手推车”包含的功能子项
  1.把商品添加到“手推车”,就是订购。
  2.从“手推车”中删掉已订购的商品。
  3.修改“手推车”中某一商品的数量。
  4.清空“手推车”。
  5.显示,统计“手推车”中的商品。
  往“手推车”中 添加商品
  非常简单,就是把某一商品的信息(名称、价格、数量、折扣等)写入Cookie即可。这里不必把商品的所有信息都写入Cookie,只要记下商品在数据库中编号或ID(这里用catid表示)与商品的数量就行。在显示“手推车”信息时,根据catid可以从商品数据库中查询出这种商品的所有具体信息。往“手推车”中添加商品的实现方法如下:
  function Addcat(catid,number){ //把商品添加到“手推车”函数
  if (number<=0)DeleteCookie(″mycat″+catid); //如果商品的数量少于或等于0,则删除该商品
  else   SetCookie(″mycat″+catid,catid+″,″+number); //把商品ID与数量写入Cookie
  var cat=window.open(″showcat.ASP″,″cat″,″toolbar=no,menubar=no,location=no,status=no,width=420,height=280″); //打开一个新窗口来显示统计的商品信息,即显示“手推车”}
  从“手推车”中 删掉商品
  也就是把Cookie中的该商品信息删除掉,调用Deletecat(catid)即可。
  function Deletecat(catid){
  DeleteCookie(″mycat″+catid); //从Cookie中删除
  var cat=window.open(″showcat.ASP″,″cat″,″toolbar=no,menubar=no,location=no,status=no,width=420,height=280″); //在CAT窗口显示统计的商品信息,即刷新显示“手推车”   }
  修改“手推车”中 商品的数量
  原理跟往“手推车”中添加商品是一样的,只不过把商品的数量修改成现在所要的数量。
  显示与统计 “手推车”中的商品信息
  显示的效果由Showcat.ASP实现。这里使用了ASP中Request.Cookies集合。Request.Cookies用来检索客户中Cookie值。我们通过遍历 Cookies 集合中的所有 Cookie 值取出我们的“手推车”的信息,然后从中分离出商品ID与商品数量。这里使用了VBscript中的SPLIT函数,SPLIT函数返回基于 0 的一维数组,其中包含指定数目的子字符串。
  取出商品ID与商品数量后再根据商品ID从商品数据库中查询出该商品的具体信息,最后输出商品的名称、单价、折扣、数量和小计等,并累计商品总件数与商品总金额。  
  源代码如下:
  Showcat.ASP
  
title><>  
  

  

































































































  
  
您的手推车信息
     
  
名称
  
单价
  
折扣
  
数量
  
小计
  
     <% dim conn,rs,sqlstr,cook,catid,number,sum,allnum,i i=0 set conn=server.createobject("ADODB.CONNECTION") '建立数据库ADO连接实例 conn.open "DSN","USERID","PWD" '打开数据库连接 set rs=Server.CreateObject("ADODB.Recordset") '建立数据库ADO记录集连接实例 for each cook in request.cookies '遍历 Cookies 集合 if instr(cook,"mycat") then '判断是否“手推车”信息 catid=split(request.cookies(cook),",")[0] '分离出商品ID number=split(request.cookies(cook),",")[1] '分离出商品数量 sqlstr="select * from cat where id="&catid&"" 'SQL查询语句 rs.open conn,sql,1,3 '执行查询,产生记录集 xiaoji=rs("单价")*rs("折扣")*number '计算小计 response.write "<  i=0   set conn=server.createobject("ADODB.CONNECTION") '建立数据库ADO连接实例   conn.open "DSN","USERID","PWD" '打开数据库连接   set rs=Server.CreateObject("ADODB.Recordset") '建立数据库ADO记录集连接实例   for each cook in request.cookies '遍历 Cookies 集合   if instr(cook,"mycat") then '判断是否“手推车”信息   catid=split(request.cookies(cook),",")[0] '分离出商品ID   number=split(request.cookies(cook),",")[1] '分离出商品数量   sqlstr="select * from cat where id="&catid&"" 'SQL查询语句   rs.open conn,sql,1,3 '执行查询,产生记录集   xiaoji=rs("单价")*rs("折扣")*number '计算小计   response.write "
"&rs("名称")&"
"   response.write "
"&rs("单价")&"
"   response.write "
"&rs("折扣")&"
"   response.write "
"   response.write "
"&xiaoji&"
"   response.write "
  allnum=allnum+number '累计商品总件数   sum=sum+xiaoji '累计总金额   rs.close   i=i+1   end if   next   set rs=nothing   set conn=nothing   %>   
  
合计
  
  
  
<%=allnum%>
  
<%=sum%>
  
<%=sum%>
     
  
 结帐
  继续购物
清空“手推车”
     
  

  
  
  j中操作COOKIE的函数源码如下:
  function Setcookie (name, value) { //设置名称为name,值为value的Cookie
  var argc = SetCookie.arguments.length;
  var argv = SetCookie.arguments;
  var path = (argc >3) ? argv[3] : null;
  var domain = (argc >4) ? argv[4] : null;
  var secure = (argc >5) ? argv[5] : false;
  documents. = name + "=" + value +
  ((path == null) ? "": ("; path=" + path)) +
  ((domain == null) ? "": ("; domain=" + domain)) +
  ((secure == true) ? ";secure" : "");
  }
  function Deletecookie (name) { //删除名称为name的Cookie
  var exp = new Date();
  exp.setTime (exp.getTime() - 1);
  var cval = GetCookie (name);
  docu

本文转自
http://study.qqcf.com/web/242/28235.htm
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值