asp编程实例:在ASP中实现购物小车

为了讲解方便,突出重点,本文用数组实现要显示的商品信息。但在实际的系统开发中,这些商品信息的数据应该来自后台数据库。 
  在程序中,我们定义了一个sp数组并对其赋值,然后用一个循环实现其数据显示及对下一个程序的数据传递。程序部分代码如下: 
<% i=1 
do while (i<=5) %> 
<tr > <td><%=sp(i)%></td> 
<td><a href=“cart.asp?spid=<%=sp(i)%>”>订购</a></td> </tr> 
<% i=i+1 
loop %> 

   构建购物小车 
  为处理用户订购商品的操作,我们自定义了两个Session的属性,分别是“spid”(用来保存商品名称)和“num”(用来保存相应商品的订购数量)。当用户订购了一种商品后,我们分三种情况对Session进行处理: 
●购物小车为空,即Session(“spid")=“",直接将spid与num加入Session; 
●购物小车非空且当前订购的商品是购物小车中没有的,则处理方法同上; 
●购物小车非空但当前订购的商品是购物小车中已有的,Session保持不变。 
上海男子医院程序实现的要点是如何判别当前订购的商品在购物小车中是否存在,因此,首先要将Session变量的内容拆分并存入数组: 
array1=split(Session(“spid”),“:”) 
然后用循环语句判别array1中是否有元素与传递来的spid相同并将结果存入变量ifbuy: 
for i=0 to ubound(array1)-1 
if array1(i)= Request.QueryString(“spid”) then 
ifbuy=true 
exit for 
end if 
next 

将新增的商品信息加入Session: 
Session(“spid”)=Session(“spid”)& Request. 
QueryString(“spid”)&“:” 
Session对象的另一个自定义属性num的处理同spid相同。 
    购物小车的显示 
  显示用户已经购买的商品信息,即是显示Session变量的内容。只要将Session变量的内容拆分,存入数组中,再显示数组的内容即可。购物小车的显示界面如图1所示,其中“数量”栏的类型为“text",“取消本商品”栏的类型为“checkbox”。这两栏的数据是可以变动的,在“取消本商品”栏中打“√”,再按“重新计算”,将在购物小车中取消该商品。

图1

“重新计算”和“继续购买”两个命令按钮用JavaScript实现: 
<script language=“JavaScript"> 
<!-- 
function onback(theForm) 
{window.history.back() } 
function recal(theForm) 
{theform.action=“modifycart.asp" } 
--> 
</script> 

实现显示购物小车的代码如下: 
<% 
dim k 
array1=split(Session(“spid”),“:”) 
array2=split(Session(“num”),“:”) 
k=0 
do while k<ubound(array1) %> 
<tr> 
<td><p align=“center”><%=array1(k)%> 
</p></td> 
<td><p><input type=“text” name=“t1” size=“10” value=“<%=array2(k)%>”></p></td> 
<td><p><input type=“checkbox” name= 
“ifcancel” value=<%=k%> ></p></td></tr> 
<% k=k+1 
loop %> 
<tr> 
<td align=center height=“42” colspan=“2”> 
<input type=“submit” name=“submit” value=“重新计算” 
onclick=“return recal(this.form)”></td> 
<td align=center height=“42” colspan=“3”> 
<input type=“submit” name=“Submit” value=“继续购买” 
onclick=“return onback(this.form)”></td> 
</tr> 
   购物小车的修改 
  在用户点击“重新计算”按钮后,需要对购物小车的内容进行修改,包括对数量的修改和将被取消的商品从Session中删除。 
  对于数量的修改,只要将文本框中被变动过的数据重新存入Session中即可: 
<% 
’首先将保存在Session变量中的订购数量提取出来 
array=split(Session(“num”),“:”) 
’将文本框t1中商品的数量提取出来,存入array数组中 
if Request.Form(“t1”)<>“”then 
Session(“num”)=“” 
j=0 
for each item in Request.Form(“t1”) 
array(j)=item 
j=j+1 
next 
’将提交后的商品数量放入Session变量中 
for i=0 to ubound(array)-1 
Session(“num”)=Session(“num”)&array(i)&“:” 
next 
end if %> 

  要从Session中删除被选中的商品,首先要取得“checkbox”的返回值,它用来定位被取消的商品在Session变量中的位置。“checkbox”的返回值k是一个循环变量,是商品所在行的行数,其实也就是被选中商品在Session中的位置。如果不加返回值定义的话,“checkbox”的返回值是按自然数顺序排列的。例如,在图1所示的情况下,如果“电视机”和“书籍”两行被选中,若是“checkbox”不加返回值定义,它的返回值将分别为1和2,这样就会导致把“电视机”和“钢笔”从Session中删除的错误。 
<% dim array1,array2,ifcancel(20),m1,m2,i,j 
array1=split(Session(“spid”),“:”) 
array2=split(Session(“num”),“:”) 
m1=ubound(array1)-1 
m2=ubound(array2)-1 
’保存复选框checkbox的值 
for i=1 to Request.Form (“ifcancel”).Count 
ifcancel(i)=Request.Form (“ifcancel”)(i) 
next 
for i=1 to Request.Form (“ifcancel”).Count 
’将checkbox选中的spid和num从Session中去掉 
for j=ifcancel(j) to m1-1 
array1(j)=array1(j+1) 
array2(j)=array2(j+1) 
next 
’将总数减1,并将后面的checkbox的值减1 
m1=m1-1 
for p=i to Request.Form (“ifcancel”).Count 
ifcancel(p)=ifcancel(p)-1 
next 
’将处理后的spid和num放回Session 
Session(“spid”)=“” 
Session(“num”)=“” 
for j=0 to m1 
Session(“spid”)=Session(“spid”)&array1(j)&“:” 
Session(“num”)=Session(“num”)&array2(j)&“:” 
next 
next %> 

  本文重点说明购物小车的实现与修改,所以对数据进行了简单化处理。在实际的商业系统中,对数据的处理要复杂得多,例如需要例外及安全验证等。

时间: 2024-10-11 03:51:07

asp编程实例:在ASP中实现购物小车的相关文章

asp编程实例:用ASP构建音乐服务器

---- 音乐服务器(Music Server)是指一个提供音乐在线服务的服务器,它包括高端提供门户服务的网站.Web数据库和低端的操作平台.硬件设施.目前,在Internet和Intranet上有不少这样的站点,特别是在一些高速宽带的局域网中(如校园网),音乐服务器给上网的朋友提供了休闲娱乐的好去处,同时也给网站带来了较高的访问率. ----像其他站点一样,音乐服务器包括网站和硬件两个部分.硬件性能和服务器效率是成正比的,因而如何构建网站才是一个音乐服务器的关键.从目前来看,网站基本有两种类型

asp编程实例:用ASP实现网上“五子棋”大赛

“五子棋”是大家都非常熟悉的一种益智类游戏,相关的游戏软件也非常多,在此我向大家隆重推出一款新的纯“网络版”的五子棋,它利用ASP做为开发环境,因此在Internet上对战的时候无需下载客户端软件,只要你有一个浏览器就可以了.你也可以在局域网上进行这个游戏. 对于ASP,我不想做过多的说明,在以前的文章中,我已经说过很多. 游戏的过程是这样的,我们首先登录,然后可以选择战场,有“金星”.“木星”.“水星”.“火星”.“土星”等五个战场,如果你自认为是一个高手,可以选择金星,否则可以依次选择其它几

asp编程实例:用ASP实现对MP3曲目信息的操作

先简单说一下MP3的ID3 标记,因为主要是操作这个玩意 MP3最开始的时候没有我们今天看到的那样,有歌手.年代,专集等等信息 只有一些简单的参数如yes/no来表示是不是privated或者copyrighted等信息,这样对MP3的相关工作带来了很多不便,1996年的时候有个老外提出来在每个MP3后面追加一段数据,用以存放上述的那些信息,后来就发展成为id3 v1 据我所知的现在已经到1.1了,具体的还是自己去查一下吧 上海诚凯男子医院程序:还是老习惯,用metadata来引入DLL,我以前

asp编程实例:ASP设计常见问题及解答精要

作为微软推出的网页与数据库解决方案,ASP由于有微软得天独厚的操作系统等技术后盾支持,因此得到了迅速的发展,并且正受到越来越多的欢迎,在目前在电子商务网站的建设中有很多都使用ASP来编写程序. 近来有很多的读者向我们咨询学习ASP的方法和在学习中遇到的一些问题,其中有一些是初学者经常遇到和面临的问题.为了让读者在学习ASP的过程中加深对ASP的了解,并能够有效地解决遇到的问题,我们特别收集了比较有代表性的一些问题,在此列举出来并一一给予解答,希望能在这有限的篇幅里为你学习ASP助一臂之力. 1.

asp编程实例:ASP编程中20个非常有用的例子

1.如何用Asp判断你的网站的虚拟物理路径 答:使用Mappath方法 < p align=“center” >< font size=“4” face=“Arial” >< b > The Physical path to this virtual website is: < /b >< /font > < font color=“#FF0000” size=“6” face=“Arial” > < %= Server.Map

asp编程实例:用文本+ASP打造新闻发布系统2

〈% dim myfso,myread set myfso=createobject("scripting.filesystemobject") set myread=myfso.opentextfile(server.mappath("./new_list.asp"),1,0) if myread.atendofstream then Response.Write "目前没有添加新闻" Response.End else dim mytext,

asp编程实例:用文本+ASP打造新闻发布系统1

//图片上传 〈SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT〉 Function GetUpload(FormData) Dim DataStart,DivStr,DivLen,DataSize,FormFieldData '分隔标志串(+CRLF) DivStr = LeftB(FormData,InStrB(FormData,str2bin(VbCrLf)) + 1) '分隔标志串长度 DivLen = LenB(DivStr) PosOpenBoundary

asp编程实例:通过表单创建word的一个例子

先创建一个表单,随便存一个名字好了.例如:上海治疗阳痿医院 xxx.html 〈form action="word_create.asp"〉 Name: 〈input type="text" name="Name" size="50" maxlength="100"〉 Email: 〈input type="text" name="Email" size="

vb中编写asp组件实例的环境已经具备了

下面,我就尝试写两个与asp中基本相类似的函数,也就是说,关键部位就在 这里了,你完全可以把你所有的asp源码封装在这里... 先写个最简单的输出屏幕信息函数: '******************************************** public sub welcomeinfo() myresponse.write ("阿里西西_web开发,欢迎访www.alixixi.com!") end sub '********************************