分享
 
 
 

"手推车”功能的实现

王朝asp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

手推车”功能的实现

“手推车”是在线购物网站(零售)中一项重要的功能。本文将要探讨用ASP程序实现“手推车”功能的技巧。要想在网站上实现“手推车”功能,有好几种方法,比如用Cookie、Session或者隐藏帧等。这几种方法各有优缺点,这里着重讨论用Cookie来实现“手推车”功能。

用Cookie实现 “手推车”功能的优缺点

Cookie是通过服务器端CGI、脚本或者客户端脚本把信息保存在客户机上的,以便为服务器或客户机再次使用这些信息提供方便。在JavaScript中有一些专门用来对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

<html><head><title>Cat</title></head>

<body>

<form name=cat>

<table border="1" width="360" cellspacing="0" cellpadding="3" bordercolorlight="#FFFFFF" bordercolor="#008000">

<tr>

<td width="100%" colspan="5" align="center"><b>您的手推车信息</b></td>

</tr>

<tr>

<td width="45">名称</td>

<td width="45">单价</td>

<td width="45">折扣</td>

<td width="45">数量</td>

<td width="45">小计</td>

<td width="135"></td>

</tr>

<% 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 "<tr><td width=45 ><font size=2 color=#800080>"&rs("名称")&"</font></td>"

response.write "<td width=45 ><font size=2 color=#800080>"&rs("单价")&"</font></td>"

response.write "<td width=45 ><font size=2 color=#800080>"&rs("折扣")&"</font></td>"

response.write "<td width=45 ><input type=text name=number"&i&" value="&number&" size=4></td>"

response.write "<td width=45 ><font size=2 color=#800080>"&xiaoji&"</font></td>"

response.write "<td width=135><input type=button value=更新 onclick=Addcat("&rs("ID")&",document.cat.number"&i&".value)> <input type=button value=删除 onclick=Deletecat("&rs("ID")&")></td></tr>

allnum=allnum+number '累计商品总件数

sum=sum+xiaoji '累计总金额

rs.close

i=i+1

end if

next

set rs=nothing

set conn=nothing

%>

<tr>

<td width="45">合计</td>

<td width="45"></td>

<td width="45"></td>

<td width="45"><%=allnum%></td>

<td width="45"><%=sum%></td>

<td width="135"><%=sum%></td>

</tr>

<tr>

<td width="360" colspan="6">&nbsp;<font size="2"><a href="checkout.asp"><font color="#FF0000">结帐</font></a>

<a href=javascript:window.close()><font color="#008000">继续购物</font></a></font> <a href=javascript:Clearcookie()><font size="2" color="#0000FF">清空“手推车”</font></a></td>

</tr>

</table>

</form>

</body>

</html>

javascript中操作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;

document.cookie = 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);

document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();

}

function Clearcookie() //清除COOKIE

{

var temp=document.cookie.split(";");

var loop3;

var ts;

for (loop3=0;loop3<temp.length;loop3++)

{

ts=temp[loop3].split("=")[0];

if (ts.indexOf('mycat')!=-1)

DeleteCookie(ts); //如果ts含“mycat”则执行清除

}

}

function getCookieVal (offset) { //取得项名称为offset的cookie值

var endstr = document.cookie.indexOf (";", offset);

if (endstr == -1)

endstr = document.cookie.length;

return unescape(document.cookie.substring(offset, endstr));

}

function GetCookie (name) { //取得名称为name的cookie值

var arg = name + "=";

var alen = arg.length;

var clen = document.cookie.length;

var i = 0;

while (i < clen) {

var j = i + alen;

if (document.cookie.substring(i, j) == arg)

return getCookieVal (j);

i = document.cookie.indexOf(" ", i) + 1;

if (i == 0) break;

}

return null;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有