|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。Apache ASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。 为了解说便利,凸起重点,本文用数组完成要显示的商品信息。但在实践的体系开辟中,这些商品信息的数据应当来自后台数据库。
在法式中,咱们界说了一个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完成:
<scriptlanguage=“javascript">
<!--
functiononback(theForm)
{window.history.back()}
functionrecal(theForm)
{theform.action=“modifycart.asp"}
-->
</script>
完成显示购物小车的代码以下:
<%
dimk
array1=split(Session(“spid”),“:”)
array2=split(Session(“num”),“:”)
k=0
dowhilek<ubound(array1)%>
<tr>
<td><palign=“center”><%=array1(k)%>
</p></td>
<td><p><inputtype=“text”name=“t1”size=“10”value=“<%=array2(k)%>”></p></td>
<td><p><inputtype=“checkbox”name=
“ifcancel”value=<%=k%>></p></td></tr>
<%k=k+1
loop%>
<tr>
<tdalign=centerheight=“42”colspan=“2”>
<inputtype=“submit”name=“submit”value=“从头盘算”
onclick=“returnrecal(this.form)”></td>
<tdalign=centerheight=“42”colspan=“3”>
<inputtype=“submit”name=“Submit”value=“持续购置”
onclick=“returnonback(this.form)”></td>
</tr>
购物小车的修正
在用户点击“从头盘算”按钮后,需求对购物小车的内容停止修正,包含对数目的修正和将被作废的商品从Session中删除。
关于数目的修正,只需将文本框中被变化过的数据从头存入Session中便可:
<%
’起首将保留在Session变量中的订购数目提掏出来
array=split(Session(“num”),“:”)
’将文本框t1中商品的数目提掏出来,存入array数组中
ifRequest.Form(“t1”)<>“”then
Session(“num”)=“”
j=0
foreachiteminRequest.Form(“t1”)
array(j)=item
j=j+1
next
’将提交后的商品数目放入Session变量中
fori=0toubound(array)-1
Session(“num”)=Session(“num”)&array(i)&“:”
next
endif%>
要从Session中删除被选中的商品,起首要获得“checkbox”的前往值,它用来定位被作废的商品在Session变量中的地位。“checkbox”的前往值k是一个轮回变量,是商品地点行的行数,其实也就是被选中商品在Session中的地位。假如不加前往值界说的话,“checkbox”的前往值是按天然数按次分列的。例如,在图1所示的情形下,假如“电视机”和“书本”两行被选中,若是“checkbox”不加前往值界说,它的前往值将分离为1和2,如许就会招致把“电视机”和“钢笔”从Session中删除的毛病。
<%dimarray1,array2,ifcancel(20),m1,m2,i,j
array1=split(Session(“spid”),“:”)
array2=split(Session(“num”),“:”)
m1=ubound(array1)-1
m2=ubound(array2)-1
’保留复选框checkbox的值
fori=1toRequest.Form(“ifcancel”).Count
ifcancel(i)=Request.Form(“ifcancel”)(i)
next
fori=1toRequest.Form(“ifcancel”).Count
’将checkbox选中的spid和num从Session中去失落
forj=ifcancel(j)tom1-1
</p> 因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。 |
|