📄 viewcart.asp
字号:
<!--#include file="config.inc" -->
<%
'函数sqlstr用来规范sql查询语句
function sqlstr(data)
sqlstr="'" & Replace(data,"'","''") & "'"
end function
'连接数据库
set conn=server.createobject("adodb.connection")
conn.open connstring
set objbuyrs=server.createobject("adodb.recordset")
' Session("insert")变量是记录用户进行定单操作的的变量。如果它不为空,则表明用户刚刚进行了一次定单操作。如果刚刚进行了一次定单操作,则需要首先清空购物车。清空的办法就是将购物车(Cookies字典)中各关键字的值设置为空值。在清空购物车的同时,还要将Session("insert")赋予一个非空值,以表明用户刚才进行的不是定单操作
if session("insert")=session.sessionid then
session("insert")=false
for each key in request.cookies("itembuy")
response.cookies("itembuy")(key)=""
next
end if
' 如果用户还没有选择过商品,那么记录选购商品的Cookies(“itembuy”)字典中将不会有任何关键字。用字典的haskeys属性来判断其是否不具有关键字,如果没有关键字,则提示用户当前购物车中没有商品
if not request.cookies("itembuy").haskeys then
response.write "<font style=""font:10pt;color:ff0000"">目前您的购物车里没有商品</font>"
session("hasitem")=false
response.write "<hr color=#999933 size=1>"
response.write "<input type=button value=""继续购物"" onclick=""window.close()"">"
else
point=1'循环变量,用来遍历cookies 字典itembuy
count=cint(request.cookies("itembuy").count)'字典中关键字的数量
' 此时表明Cookies(“itembuy”)字典中有关键字,但是并不知道是否都为空。因此用这个循环来判断字典中所有的关键字。用数字来引用Cookies字典中的关键字是Cookies字典关键字引用的另一种方法。如果遇到第一个不为空的关键字,则说明当前购物车中有商品,且该商品没有进行过定单操作,是一个合法的商品(所谓合法指可以进行交易),并且结束循环
do while point<=count
if request.cookies("itembuy")(point)="" then
point=point+1'如果此关键字的值为空,则循环继续
else
exit do'如果遇到第1个不为空的关键字,则跳出循环
end if
loop
if point>count then
response.write "<font style=""font:10pt;color:ff0000"">目前您的购物车里没有商品</font>"
session("hasitem")=false
response.write "<hr color=#999933 size=1>"
response.write "<input type=button value=""继续购物"" onclick=""window.close()"">"
else
'开始制表显示购物车里所有的商品,并提供一个文本框,让用户填写所需要购买的数量。如果用户在其中填写了0,则表明放弃该商品的购买
response.write "<font style=""font:10pt;color:ff0000"">您已经选择了以下商品<br>如果有您不需要的,在购买数中输入0即可</font>"
response.write "<hr color=#999933 size=1>"
response.write "<center><table><tr><td width=50>编号</td><td width=150>名称</td><td width=100>单价</td><td width=100>购买数</td></tr>"
response.write "<form action=""forinvoice.asp"" method=post target=""main"" name=""view"">"
do while point<=count
'获取商品的编号
productid=request.cookies("itembuy")(point)
if productid="" then
point=point+1
else '如果这个cookie中的key不为空,才显示这条记录
'根据编号在表中找到这个记录
ssql="select * from product where productid=" & sqlstr(productid)
objbuyrs.activeconnection=conn
objbuyrs.source=ssql
objbuyrs.open
'输出当前记录的信息
response.write "<tr><td>" & objbuyrs("productid") & "</td>"
response.write "<td>" & objbuyrs("name") & "</td>"
response.write "<td>" & objbuyrs("price") & "</td>"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'下面的输入框用来收集每件商品的购买数,默认为1,'如果输入为0,则表示取消此件商品的购买。请注意这里给每个文本框起属性“name”的方式:将每个商品的货号作为各商品购买数文本框的名字。由于商品的货号在数据库中是惟一的,因此每个文本框的名字也是惟一,这样在定单操作程序中,使用该文本框的名字就能接收到它代表的商品的购买数和相应的商品货号
nametemp=objbuyrs("productid")
response.write "<td><input type=text size=2 value=1 name=" & nametemp & "></td>"
response.write "</tr>"
point=point+1
'如果循环变量越界,则退出循环
if point>request.cookies("itembuy").count then
exit do
end if
'因为objbuyrs需要再次使用,所以必须先关闭
objbuyrs.close
end if
loop
response.write "</table>" '完成制表
'关闭所有操作数据库的变量
conn.close
set conn=nothing
response.write "<hr color=#999933 size=1>"
%>
<input type=submit name="goinvoice" value="现在结账">
<input type=button name="close" value="继续购物" onclick="window.close()">
<input type=button name="remove" value="清空购物车" onclick="window.open('removecart.asp','_self')">
</form>
<%
end if
end if
%>
<html><head>
<meta http-equiv="content-language" content="zh-CN">
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<title>查看购物车</title>
<style><!--
td{font:10pt;color:#6600FF;}
input{background-color:#eeeeee;border-style:solid;border-color:#6666cc;border-width:1;}
--></style></head>
<body style="font:10pt" bgcolor=ffffff>
</body></html>
<script language=vbscript>
<!--
'view是商品购买数所在的表单。在提交到定单操作的程序之后,也将当前显示购物车商品的窗口关闭。
sub view_onsubmit()
window.close()
end sub
-->
</script>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -