摘 要: 购物车模块是电子商务网站主要的核心模块。介绍了常用的购物车的设计技术,运用ASP中的Session对象实现购物车的功能,并给出了重要部分的源代码。
关键词: 购物车;Cookie对象;Session对象
1 购物车简介
购物车是电子商务网站与用户交互的重要模块,购物网站要完成购买转化率,除了要有丰富、适合消费者需求的产品外,对于购物车的设计也要做到操作简便、流程清晰、付款方便等特点。它的主要作用是临时存放用户的购物信息,用户可以随时增加商品、修改数量、删除商品等操作。购物车设计得好与坏,直接决定了用户购买的积极性,对于网站转化率而言具有举足轻重的意义。
2 购物车设计方法
购物车的内容其实就是客户的订单的信息存放在哪里,用什么技术来进行存放?一般购物车的设计方法有以下三种:
(1)Cookie对象设计方法
Cookie是通过服务器端CGI、脚本或者客户端脚本把信息保存在客户机上,以便为服务器或客户机再次使用这些信息提供方便。使用Cookie来保存购物车信息的优点是:即使当用户不小心关闭了浏览器窗口,购物车中的信息也不会丢失,并且它占用很少的服务器端资源。缺点是:必须要求用户端浏览器支持Cookie并且打开它,如果用户端浏览器不支持Cookie或者没有打开Cookie,则购物功能就不能实现。
(2)Session对象设计方法
Session对象用于存储特定用户会话所需的信息。Session对象是在每一位访问者从Web站点或Web应用程序中首次请求一个ASP页时创建的,它将保留到默认的期限结束或通过脚本设置中止的期限。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。利用Session的功能,可以将购物信息(商品ID和购买数量)存储到Session变量中。
(3)数据库的应用设计方法
将用户的购物信息存入临时表单的临时文件中,当用户下订单时再删除临时记录并将信息保存在数据库中。但这种方法需要频繁地与数据库或文件进行数据交换,占用了大量的系统资源,对于大型网站,服务器的负担过重,显然这种办法不合适。
以上三种购物车的设计方法,各有利弊,本文重点介绍Session实现“购物车”设计与实现。
3 Session购物车设计与实现
(1)显示购物车
①判断购物车是否为空。为空结束,不为空则调用数据库,在数据库中显示保存在Session中变量商品ID的数量、价格等。
<%
Set rs=Server.CreateObject("ADODB.RecordSet")
strsql="select * from shangpin where ID in ("&Session("ProductList")&") order by ID"′查询保存在Session里的变量 ProductList(商品ID)
rs.open strsql,conn,1,1
%>
②判断该客户是否为第一次购物。根据从表单接收的商品数量是否为0来判定。
Quatity=Request.Form("Q_"& rs("ID")) ′接收表单提交的商品数量
下面表单部分介绍使用这种接收方法的目的:
If Quatity <= 0 Then ′判断是否第一次购物
(商品数量为什么会小于零,前面不是定义商品数量初始值为1了吗?这是变量 Quatity 重复赋值的问题)
′虽然定义过商品的数量,但是若又接收表单提交的商品数量,如果是第一次购买商品的话,变量Quatity不会在接收表单时被赋予任何值
′Quatity=Session(rs("ID"))′对应变量Quatity
进行赋值(以前存储的商品数量)
If Quatity<=0 Then Quatity=1′ 如果该商品是用户第一次购买,数量为1
End If
Session(rs("ID"))=Quatity′将商品数量存入Session里
Sum=Sum+rs("huiyuan")*Quatity′累加器的效果
(新价格总记=旧价格总记+商品价格×商品数量)
(2)购物车中的商品及数量的修改
设计一变量Productlist,将多个商品ID以逗号分隔,组成一个字符串存放在变量中,运用Vbscript中的函数 Split,对字符串进行拆分。
ProductList=Session("ProductList")′取得Session中的值(N个商品ID)赋值给变量ProductList
Products=Split(Request("Prodid"),",")′以逗号分割,赋值给变量Products(此时变量Products以数组形式存在)
For I=0 To UBound(Products) ′按数组的最大下标进行循环
PutToShopBag Products(I),ProductList′ 调用过程并返回参数(商品ID,保存商品ID的变量 ProductList)
Next
Session("ProductList")=ProductList′ 将处理后的变量 ProductList的值写入到Session中
Sub PutToShopBag(Prodid,ProductList)
′定义过程,只有调用时才可以使用
If Len(ProductList)=0 Then′
如果变量ProductList的值长度为0(等同与值为空)
ProductList=Prodid′将变量ProductList赋值为商品ID,
也就是第一次购物的记录
ElseIf InStr(ProductList,Prodid)<=0 Then′ 判断变量ProductList里面是否有商品ID的存在
ProductList=ProductList&","&Prodid &""′多次购物,将多个商品ID以逗号分隔组成一个字符串赋值给变量 ProductList
End If
End Sub
If Request(“update”) then
Productlist=””‘清空购物车
Products=split(Request(“Prodid”),”’,”)′ 取得表单提交的商品ID并赋值
对产生的数组Products运用循环,将多个商品ID以逗号分隔,组成一串字符串赋值给变量Productlist。
Session(“Productlist”)=Productlist
End if
购物车程序是网站商城的一个小模块,也是必不可少的模块。对于电子商务网站来说,购物车的实现需要根据实际情况使用不同的技术。购物车其实就是简单的技术和复杂的过程所构成的,一定要在思路上理顺关系,然后运用技术解决。
参考文献
[1] 邹天思,孙明丽.ASP数据库系统开发完全手册[M].北京:人民邮电出版社,2006.
[2] 白金荣,邹国忠,沐士光.购物车功能的实现[J].科技信息,2009(15).
[3] 田晓玲.基于Session技术的购物车的设计与实现[J].北京化工职业技术学院学报,2009(1).