本管理程序的主要功能有:1、图书列表展示功能;2、图书放置购物车、移去购物车和清空购物车功能;3、购书结帐功能;4、新会员注册功能。
Iindex.asp 首页。框架结构。上框架连接Top.htm页面,下框架连接Booklist页面。
htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312"title网上图书管理系统--图书列表/title/headframeset rows="80,*" cols="*" frameborder="NO" border="0" framespacing="0"frame src="top.htm" name="topFrame" scrolling="NO" noresize frame src="booklist.asp" name="mainFrame"/framesetnoframesbody/body/noframes/html
Conn.asp 数据库连接文件。在所有与数据库连接的页面中只要包括该文件,即可以连接和打开数据库。
'创建连接对象% set Conn=server.CreateObject("ADODB.Connection")'连接字符串strSQL="Driver={Microsoft Access Driver (*.mdb)};DBQ=" &_server.MapPath("bookshop.mdb")conn.open(strSQL)%
Top.htm 图书列表 Top 页。仅仅是一个图片标题页。
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312"title网上图书管理系统/titlelink href="style.css" rel="stylesheet"/headbody topmargin="0"table width="770" height="124" border="0" cellpadding="-2" cellspacing="-2"trtd background="images/bg_booklist.gif" /td/tr/table/body/html
Booklist 以表格的形式分页显示出所有的图书。
本页面以表格的形式分页显示出所有记录。实现过程如下:
1、使用一个包含文件,创建一个数据库连接对象;
2、创建一个记录集对象;
3、创建一个表格,第一行用来显示字段名;
4、判断记录指针是不是到了记录的头部或尾部之外,若是显示提示信息,若不是,则开始进行提取当前页的每一条记录和进行分页;
5、通过Do While 循环语句,将当前页的每一条记录读取出来;
6、通过For 循环将除当前页码之外的每一个页码做一个超连接;
7、关闭记录集对象并释放其所占用的所有资源;
8、关闭连接对象并释放其所占用的所有资源。
%@LANGUAGE="VBSCRIPT"%!--使用一个包含文件,创建一个数据库连接对象--!--#include file="Connections/conn.asp" --%'创建一个记录集对象。set rs_booklist=Server.CreateObject("ADODB.RecordSet")sql="SELECT BookID, BookName, bnumber FROM DB_bookinfo ORDER BY bnumber DESC,bookname"rs_booklist.open sql,conn,1,3%!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312"title图书列表/titlelink href="style.css" rel="stylesheet"style type="text/css"!--body,td,th {font-size: 11pt;color: #009999;line-height: 1.5;}body {background-image: url(images/bg1.jpg);}--/style/headbody leftmargin="0" topmargin="0"div align="center"!--创建一个表格,第一行用来显示字段名。--table width="644" border="1" bordercolor="#cccc99" background="images/bg.jpg"trtd height="20"div align="center"strong书号/strong/div/tdtd height="20"div align="center"strong书名/strong/div/tdtd height="20"div align="center"strong数量/strong/div/tdtd height="20" /td/tr!--*******分页开始******************--%'判断记录指针是不是到了记录的头部或尾部之外,若是显示提示信息,若不是,则开始进行提取当前页的每一条记录和进行分页。If rs_booklist.Bof AND rs_booklist.Eof ThenResponse.Write "没有数据"Else'分页显示Dim page_size '此变量用来存放每一页的记录数。Dim page_nonce '此变量用来存放当前页的页码。Dim page_total '此变量用来存放总页数。page_size=7 '将第一页记录数设置为7条。rs_booklist.PageSize=page_size '将page_size变量中的值赋给rs_booklist记录集对象的页面大小(PageSize)属性。page_total=rs_booklist.PageCount '将rs_booklist记录集对象的页面个数(PageCount)属性赋给变量page_total。'下面5句,是判断网页是不是刚打开,若是,则将1赋给变量page_nonce(即当前页为第一页),'若不是,则将由Request对象的Querystring集合从HTTP查询字符串中获取来的变量值(当前页码)赋给变量page_nonce。If Request.QueryString("page_nonce")"" Thenpage_nonce=Cint(Request.QueryString ("page_nonce"))Elsepage_nonce=1End If'将当前页码赋给记录集对象的表示当前记录页号的属性(AbsolutePage)。rs_booklist.AbsolutePage=page_nonceDim II=page_size'通过Do While 循环语句,将当前页的每一条记录读取出来。Do While Not rs_booklist.Eof And I0I=I-1Response.Write "tr align='center'"Response.Write "td height='10'" & rs_booklist("BookID") & "/td"Response.Write "td height='10'" & rs_booklist("BookName") & "/td"Response.Write "td height='10'" & rs_booklist("bnumber") & " /td"%td width="25" height='10'div align="center"a href="buycar_add.asp?bookID=%= rs_booklist("bookID") %" target="txtFrame"img src="images/add.gif" alt="添加至购物车" width="18" height="18" border="0" align="middle"/a/div/td%'将记录指针移动到下一条记录。rs_booklist.MoveNextLoopResponse.Write "/table"'开始做分页连接。Response.Write "p align='center'分页: "'通过For 循环将除当前页码号之外的每一个页码号做一个超连接,For j=1 To page_totalIf j=page_nonce ThenResponse.Write j & " "ElseResponse.Write "a href='booklist.asp?page_nonce=" & j & "'" & j & "/a "End IfNextEnd Ifrs_booklist.CloseSet rs_booklist=nothingConn.CloseSet Conn=nothing%/table/dir/body/html
Buycar_add.asp 添加至购物车。
本页面是一个程序处理页。其主要功能有:
1、通过 Session("BookIDList") 变量在打开网页时清空 BookIDList 中的值,因为刚打开网页 Session("BookIDList") 为空;
2、将由Request对象获得的图书ID存入变量 BookIDList 中;
3、将变量 BookIDList 中的值赋给 Session 对象中的 BookIDList变量,以便在"buycar_see.asp"页面中使用;
4、将页面'转到"查看购物车"页面 "buycar_see.asp"。
注:InStr 函数返回的是一个位置值,此位置是一个搜索字符串在另一个被搜索字符串中的出现的位置。其格式如下:
InStr([IngStartPos] , strString1 , strString2 [, compare])
参数:IngStartPos :从strString1 中开始对 strString2 进行搜索的位置;
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)strString1 :字符串,在这个字符串中搜索 strString2 ;
strString2 :所需搜索的字符串;
Compare :一个数值数据,用来指定所采用的搜索比较方式;如果此参数被忽略,则缺省值为0(即vbBinaryCompare),招待的是二进制比较。
%@ language="VBScript"%%BookIDList = Session("BookIDList") '此句的功能是打开网页时清空 BookIDList 中的值。If Len(BookIDList) = 0 Then '如果第一次提交购物车中的图书,BookIDList = "'" & request("bookID") & "'"'则将由Request对象获得的图书ID存入变量 BookIDList 中。ElseIf InStr( BookIDList, request("bookID")) = 0 Then'如果不是第一次提交购物车的图书,而且,当前提交的图书在这之前没有提交过,BookIDList = BookIDList & ", '" & request("bookID") & "'"'则将本次提交的图书ID存入变量 BookIDList 的尾部,并用逗号与前面的值分开。End IfSession("BookIDList") = BookIDList'将变量 BookIDList 中的值赋给 Session 对象中的 BookIDList变量。Response.Redirect "buycar_see.asp" '转到查看购物车页面'InStr 函数返回的是一个位置值,此位置是一个搜索字符串在另一个被搜索字符串中的出现的位置。%Buycar_see.asp 查看购物车。 本页面以表格的形式将您所选图书显示出来,在此可以由您修改所购图书的数量,然后自动计算金额和合计总金额。并通过四个超连接,分别连接到登录收银台页面(Checkout.asp)、主页面(index.asp)、从购物车中移去所选图书页面(move.asp)和清空购物车页面(Clear.asp)。注: 函数:返回表达式,此表达式已被转换为 Double 子类型的 Variant。!-- #include file="connections/conn.asp" --!--如果点击了到收银台结帐按钮,则转向checkout.asp页面。--% if request.Form("jiezhang")="到收银台结账" thenresponse.Redirect("checkout.asp")end ifIf Len(session("BookIDList")) 0 Then'如果 session("BookIDList") 的长度不为零,即其不为空,则执行下面的SQL语句。sql = "Select * From DB_bookinfo Where BookID In (" &_session("bookIDList") & ") Order By BookID"'从 DB_bookinfo 表中查询图书ID与在session("bookIDList")变量保存的值中相匹配的记录,并以图书ID排序Set rs = conn.Execute( sql )'执行上面的 SQL 语句,并返回一个记录集。else'如果session("BookIDList") 的长度不为零,即其不为空,则跳转到 buycar_empty.asp"页面。Response.Redirect "buycar_empty.asp"end if%!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312"title查看购物车/titlelink href="style.css" rel="stylesheet"script language="JavaScript"//自定义一个名为 stand()自定义函数。function stand(){//当点击了"继续选择图书"按时,跳转到index.asp页面。window.location.href="./index.asp";}/scriptstyle type="text/css"!--.style3 {color: #ECF5FF}--/style/headbody leftmargin="0" topmargin="10" background="images/bg1.jpg"centertable width="640" height="134" border="0" cellpadding="-1" cellspacing="-1"trtd background="images/bg.jpg"img src="images/buycar_top.gif" width="640" height="130"/td/tr/tabletable width="640" height="306" border="0" cellpadding="-1" cellspacing="-1"trtd valign="top" background="images/bg.jpg"div align="center"form name="form1" method="post" action="buycar_see.asp"table width="97%" height="52" border="1" align="center" cellpadding="0"cellspacing="0" bordercolordark="#0099FF" bordercolorlight="#FFFFFF"bordercolor="#FFFFFF"!--在内层表格的第一第显示出记录集中所选字段名。--trtd width="14%" height="16"div align="center"书号/div/tdtd width="41%"div align="center"书名/div/tdtd width="15%"div align="center"单价/div/tdtd width="9%"div align="center"数量/div/tdtd width="14%"div align="center"金额/div/tdtd width="7%"div align="center"移去/div/td/tr% i=0sum=0session("sl")=""session("checkBook")=""%!--使用while 的循环语句,将购物车中的图书记录一一列出来。--% while not rs.eof%trtd height="16" %=rs("BookID")%/tdtd %=rs("BookName")%/td% i=i+1 %% sl = CInt(Request( "sl"&i)) 's1 用来存储所选图书数量。s1 & i 表示数量输入框名。If sl = 0 Then sl = 1 '当跳转到此页面,将数量值赋1.Sum = Sum + CDbl(rs("Price")) * sl '计算总金额%tddiv align="center"!--此单元格显示单价值--input name=%= "price"&i% type="text" class="Sytle_auto"id="price" value=%=rs("price")%size="6" readonly="yes"(元)/div/tdtddiv align="center"!--此单元格显示数量--input name=%= "sl"&i% type="text" class="Sytle_auto_s" id="sl"onChange="JScript:form1.submit();" value=%= sl% size="4"!--当改变输入框的内容时,则form1的提交按钮将进行提交。--/div/tdtddiv align="center"!--此单元格显示金额--input name=%= "je"&i% type="text" class="Sytle_auto"id="je" value=%=rs("price")*sl% size="6" readonly="yes"(元)/div/td!--此单元格在图片上做一个超连接,将页面转到move.asp指定参数的页面。--tddiv align="center"a href="move.asp?clickBookID=%=rs("BookID")%"img src="images/move.gif" width="18" height="17" border="0"/a/div/td/tr%if len(session("sl"))=0 then '如果只提交一种图书,则将该图书的数量赋给变量session("s1")session("sl")=slelsesession("sl")=session("sl")&", "&sl '如果提交了两种或两种以上的图书。则将各种图书的数量赋给变量session("s1")end ifif len(session("checkBook"))=0 then '如果只提交一种图书,则将该图书ID赋给变量session("checkBook")session("checkBook")="'"& rs("BookID")& "'"else '如果提交了两种或两种以上的图书。则将各种图书ID赋给变量session("checkBook")session("checkBook")=session("CheckBook")&", '"& rs("BookID")& "'"end ifrs.movenext '移动到下一条记录。wend %/tabletable width="97%" height="40" border="0" cellpadding="-1"cellspacing="-1" class="Sytle_auto"trtddiv align="right"合计金额:!--此单元格用来合计金额,只读输入框--input name="sum" type="text" class="Sytle_auto" id="sum2"value=%= sum % size="10" readonly="yes"(元)/div/td/tr/tabletable width="97%" height="39" border="0" cellpadding="-1" cellspacing="-1"trtd width="79%"div align="center"input type="submit" name="jiezhang" value="到收银台结账" !--当点击此提交按钮时,转到checkout.asp页面。--input type="button" name="goon" value="继续选择图书" onClick="stand()"!--当单击此按钮时,调用stand()函数。转向index.asp页面--a href="clear.asp" /a/div/tdtd width="5%"div align="center"a href="clear.asp" !--当点击此提交按钮时,转到buycar_see.asp页面。--img src="images/emptybuycar.gif" width="20" height="20" border="0"/a/div/tdtd width="16%"a href="clear.asp"清空购物车 /a/td/tr/table/form/div/td/tr/table/center/body/html
Move.asp 从购物车中移去所选图书。 本页面是从购物车中移去您不想要的图书。它的主要功能有:
1、通过Request对象读取HTTP查询字符串中clickBookID参数的值(即您要移去图书的ID)赋给变量cclickBookID;
2、将数组中的每一项(即您所选的所全图书ID)与您要移去的图书ID(即clickBookID参数值)一一进行比较,如果不等,则将数组中的此项元素赋给变量BookIDList;
3、如果BookIDList为空了,即全删除了,则跳转到buycar_empty.asp页面,否则,跳转到buycar_see.asp页面。
%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%%ArrcheckBook= Split(Session("CheckBook"),", ") '将所选图书以数组的形式显示出来。BookIDList="" '清空BookIDList变量。For I=0 To UBound(ArrcheckBook)'显示数组的最大维数cclickBookID="'"&request("clickBookID")&"'"'通过Request对象读取HTTP查询字符串中clickBookID参数的值(即您要移去图书的ID)赋给变量'cclickBookID。If ArrcheckBook(i)cclickBookID Then'将数组中的每一项(即您所选的r所全图书ID)与您要移去的图书ID一一进行比较,如果不等,则将数组中的'此项元素赋给变量BookIDList.If Len(BookIDList) = 0 Then'如果第一次进行比较,BookIDList为空,所以就将ArrcheckBook(i)的值赋给变量BookIDList.BookIDList =ArrcheckBook(i)Else'如果不是第一次进行比较,则将ArrcheckBook(i)的值赋给变量BookIDList原有值的尾部,并用逗号分隔开来.BookIDList = BookIDList & ", " & ArrcheckBook(i)End Ifend ifNext'如果BookIDList为空了,即全删除了,则跳转到buycar_empty.asp页面。If len(BookIDList)=0 Thensession("BookIDList")= BookIDListResponse.Redirect("buycar_empty.asp")Else'否则,跳转到buycar_see.asp页面。session("BookIDList")= BookIDListResponse.Redirect "buycar_see.asp"end if%
Clear.asp 清空购物车。 本页面是清空购物车,它的主要功能有:
1、使用session对象的Abandon属性结束session对象;
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)2、跳转到查看购物车页面
%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%!--使用session对象的Abandon属性结束session对象。--% session.Abandon()'跳转到查看购物车页面。response.Redirect("buycar_see.asp")%
buycar_empty.asp 购物车已被清空提示页面。 本页面是显示您的购物车已被清空的提示页,它的主要功能有:
1、提示您购物车已被清空,
2、返回主页面
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"htmlheadtitle您的购物车为空!/titlestyle!--p { font-size: 25pt; font-family: "宋体";}body {background-image: url(images/bg1.jpg);}--/style/headbody leftmargin="0" topmargin="20"centertable width="640" height="135" border="0" cellpadding="-1" cellspacing="-1"trtd background="images/bg.jpg"img src="images/buycar_top.gif" width="640" height="134"/td/tr/tabletable width="640" height="280" border="0" cellpadding="-1" cellspacing="-1"trtd align="center" bordercolor="1" background="images/bg.jpg"pstrongfont color="#990000"您的购物车已被清空!/font/strong/pbrp class="style1"欢迎惠顾!/p/td/trtrtd height="70" background="images/bg.jpg"div align="center"a href="index.asp"img src="images/home1.gif" width="75" height="34" border="0"/a/div/td/tr/table/center/body/html
Checkout.asp 收银台登录页面。 本页面是收银台登录页面。其主要功能有:
1、通过表单提交会员ID和用户密码;
2、从DB_Member(会员)表中查询ID等于由表单提交的用户ID的记录;
3、如果没有找到相应的记录,则转向登录失败页面,否则,验证密码;
4、从图书信息表(DB_bookinf)中查询图书ID(BookID)在session("checkBook")变量中包含的值的记录。并以列表的形式显示出来;
5、通过注册按钮将页面跳转到注册页面"register.asp";
6、通过结帐按钮调用check()函数进行密码验证,若密码输入正确,则跳到登录成功(checkout_OK.ASP)页面。否则,提示: "您输入的会员密码错误,请重新输入!"
%@LANGUAGE="VBSCRIPT"%!--#include file="Connections/conn.asp" --!--将session对象的mName变量清空。--% session("mName")=""%!--如果从表单中提取的会员ID和用户密码均不为空--% if request.Form("UserID")"" and request.Form("userPWD")"" then'则将表单提交的分别赋给变量session("UserID")和session("PWD")。session("UserID")=request.Form("UserID")session("PWD")=request.Form("userPWD")'从DB_Member(会员)表中查询ID等于由表单提交的用户ID的记录。sql="SELECT ID, PassWord FROM DB_Member WHERE ID='" & session("UserID")&"'"set rs=conn.execute(sql)'如果记录到了记录集的尾部,则转向登录失败页面。if rs.eof then%script language="javascript"window.location.href="checkout_fail.htm"/script%else'否则,检查密码是否对,如对,则跳转到用户登录成功页面。if rs("password")=session("PWD") then%script language="javascript"window.location.href="checkout_OK.ASP"/script%else%'否则,提示:您输入的会员密码错误,请重新输入!并返回下一页。script language="javascript"alert("您输入的会员密码错误,请重新输入!");history.back();/script%end ifend ifend if%%'从图书信息表(DB_bookinf)中查询图书ID(BookID)在session("checkBook")变量中包含的值的记录sql = "Select * From DB_bookinfo Where BookID In (" & session("checkBook") & ")"Set rs_C = conn.Execute( sql )%!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312"title收银台!/titlelink href="style.css" rel="stylesheet"script language="JavaScript"//检验会员ID号和密码function check(){if (form1.userID.value==""){ alert("请输入会员ID号!");form1.userID.focus();return;}if (form1.userPWD.value==""){ alert("请输入会员密码!");form1.userPWD.focus();return;}form1.submit();}/script/headbody leftmargin="0" topmargin="0"centertable width="640" height="133" border="0" cellpadding="-1" cellspacing="-1"trtd background="images/bg.jpg"img src="images/checkout.gif" width="640" height="130"/td/tr/table!--外表格开始--table width="640" height="341" border="0" cellpadding="-1" cellspacing="-1"trtd valign="top" background="images/bg.jpg"div align="center"!--表单开始--form name="form1" method="POST" action="checkout.asp"!--内表格开始--table width="97%" height="119" border="0" cellpadding="-1" cellspacing="-1"trtd height="37" div align="center"strongfont color="#C60001"如果您还不是我们的会员,请点击注册按钮注册会员!/font/strong/div/td/trtrtd!--嵌套的第三层表格开始,在这个表格中插入表单--table width="81%" height="70" border="0" align="center"cellpadding="-1" cellspacing="-1"trtd width="32%" height="32" div align="right"会员ID号:/div/tdtd width="36%"input name="userID" type="text" id="userID"/tdtd width="32%"a href="register.asp" 注册/a/td/trtrtddiv align="right"您的密码:/div/tdtdinput name="userPWD" type="password" id="userPWD"/tdtdinput type="button" name="Submit" value="结账" onClick="check()"/td/tr/table/td/tr/table!--嵌套的第三层表格开始,在这个表格中插入一条水平线--table width="97%" border="0" align="center" cellpadding="-1" cellspacing="-1"trtd hr width="97%"/td/tr/table/form!--表单结束--table width="97%" height="27" border="0" align="center" cellpadding="-1" cellspacing="-1"trtdstrong 以下是您选购的图书:/strong/td/tr/table!--下面这个表格用来显示您所选图书信息--table width="94%" height="52" border="1" align="center" cellpadding="0" cellspacing="0"bordercolordark="#0000FF" bordercolorlight="#FFFFFF" bordercolor="#FFFFFF"trtd width="17%" height="16"div align="center"书号/div/tdtd width="39%"div align="center"书名/div/tdtd width="16%"div align="center"单价/div/tdtd width="11%"div align="center"数量/div/tdtd width="17%"div align="center"金额/div/td/tr%ASL=""AID=""ASL=split(session("sl"),",")AID=split(session("checkBook"),",")i=0while not rs_C.eof%trtd height="16"div align="center"%= rs_C("BookID") %/div/tdtd %=rs_C("BookName")%/tdtddiv align="right" %=rs_C("price")%(元)/div/tdtddiv align="center"%= ASL(i)%/div/tdtddiv align="right" %=rs_C("price")*ASL(i)%(元)/div/td/tr%i=i+1rs_C.movenextwend %/table/div/td/tr/table/center/body/html
CheckOut_OK.asp 购书结帐成功页面。 本页面是购书结帐成功页面。其主要功能有:
1、从会员信息表中查询 ID等于session("UserID")记录中等级的值,并将其值赋给变量session("grade");
2、从等级表中查找等级等于session("grade")变量的折扣率;
3、从销售表中查找订单ID的最大值作为 MAXID 字段名输出;
4、从图书信息表中查找图书ID在变量session("checkBool")中有与其相匹配的图书记录;
5、自动产生订单号,它由四部分组成:年、月、日和先前的最大订单号的后五位加1;
6、计算图书应付金额,它等于单价*数量*折扣率;
7、往销售表中插入一条记录;
8、从销售量表中查询图书ID等于bookID变量的图书记录,如果记录指针到了记录的尾部,则向记录集中插入一条记录,否则,更改原有的图书ID相等的图书数量值;
9、更改会员信息表中ID等于parID会员的总金额;
10、自动更新会员等级;
11、提交本次消费金额和应付金额。
%@LANGUAGE="VBSCRIPT"%!--#include file="Connections/conn.asp" --%'创建一个记录集对象。Set rs_grade = Server.CreateObject("ADODB.Recordset")'***从会员信息表中查询 ID等于session("UserID")记录中等级的值。'Replace函数可以用来对给定字符串中的指定部分进行规定次的替换。sql_grade= "SELECT grade FROM DB_Member WHERE ID = '" +_Replace(session("UserID"), "'", "''") + "'"rs_grade=conn.execute(sql_grade)'将用户等级变量清空。session("grade")=""'将会员信息表中的相应会员的等级值赋给变量session("grade")session("grade")=Replace(rs_grade("grade"), "'", "''")Set rs_rebate = Server.CreateObject("ADODB.Recordset")'***从等级表中查找等级等于session("grade")变量的折扣率。sql_rebate= "SELECT rebate FROM DB_rebate WHERE grade = '" +_session("grade") + "'"rs_rebate.open sql_rebate,conn,3%%set rs_max= Server.CreateObject("ADODB.RecordSet")'***从销售表中查找订单ID的最大值作为 MAXID 字段名输出。sql_max="select MAX(OrderID) AS MAXID from DB_sell"rs_max=conn.execute(sql_max)%%'***从图书信息表中查找图书ID在变量session("checkBool")中有与其相匹配的图书记录。sql = "Select * From DB_bookinfo Where BookID In (" & session("checkBook") & ")"Set rs_C = conn.Execute( sql )%!--开始自动产生订单号,它由四部分组成:年、月、日和先前的最大订单号的后五位加1。--% no=trim(rs_max("MaxID"))if len(month(date()))=1 thencmonth="0"& cstr(month(date()))elsecmonth=cstr(month(date()))end ifif len(day(date()))=1 thencday="0"& cstr(day(date()))elsecday=cstr(day(date()))end ifselect case len(int(Right(no,5)+1))case 1cno="0000"+Cstr(int(Right(no,5)+1))case 2cno="000"+Cstr(int(Right(no,5)+1))case 3cno="00"+Cstr(int(Right(no,5)+1))case 4cno="0"+Cstr(int(Right(no,5)+1))case 5cno=Cstr(int(Right(no,5)+1))case Elsecno="00001"end selectintno=cStr(Year(Date()))& cmonth& cday&cno'自动产生订单号结束。%%ASL=""ASL=split(session("sl"),",") '此数组用来存储所选图书的数量。i=0sum=0shuliang=0'开始计算所购图书总金额、往销售表中插入一条记录和往销售量表插入一条记录或更改相应的记录。while not rs_C.eofbookID=rs_C("BookID")bookName=rs_C("BookName")price=rs_C("price")paSL=cInt(ASL(i))sum_1=sum_1+rs_C("price")*ASL(i)'图书金额等于单价*数量*折扣率booksum=rs_C("price")*ASL(i)*CSng(left(rs_rebate("rebate"),len(rs_rebate("rebate"))-1))/10sum=sum+booksum'left(rs_rebate("rebate"),len(rs_rebate("rebate"))-1)这一部分是把从记录集取出的折扣率的值(字符串),再从中取出其长度减1的字符串,这时得到的值就去掉了最后的折字。oDate=now()parID=Session("UserID")'往销售表中插入一条记录。sql_Ins="insert into DB_sell(OrderID,BookID,BookName,Price,bnumber,sum,HYID,OrderDate)"&_"values('"&intno&"','"&bookID&"','"&bookName&"',"&price&","&paSL&","&booksum&_",'"&parID&"',#"&oDate&"#)"conn.execute sql_Ins'***从销售量表中查询图书ID等于bookID变量的图书记录。sql_update="select * from DB_sellsum where BookID='"&bookID&"'"set rs_update=conn.execute (sql_update)if rs_update.eof then'如果记录指针到了记录的尾部,则向记录集中插入一条记录。sql_num="insert into DB_sellsum(BookID,BookName,bnumber) values('"&bookID&_"','"&bookName&"',"&paSL&")"conn.execute sql_numelse'否则,更改原有的图书ID相等的图书数量值。sql_num="update DB_sellsum set bnumber=bnumber+"&paSL&" where BookID='"&bookID&"'"conn.execute sql_numend ifi=i+1rs_C.movenextwend %!--********结束**********--%'***更改会员信息表中ID等于parID会员的总金额。sql="update DB_member set amount=amount+ "&sum&" where ID= '"&parID&"'"conn.execute sql'开始自动更新会员等级'***从会员信息表中查询ID等于parID会员的记录,并且只含等级和累计金额两个字段。autosql="select grade,amount from DB_member where ID= '"&parID&"'"set rs_auto=conn.execute (autosql)samount=rs_auto("amount") '将字段中的累计金额值赋给变量samount。'***从折扣率表中查询所有记录sql_rebate="select* from DB_rebate"set rs_rebateall=conn.execute (sql_rebate)'将记录指针移动到第一帧。rs_rebateall.movefirstbz=0while not rs_rebateall.eof'如果记录指针没有到记录尾部,如果总金额大于记录集中的金额值,则将原等级加1赋给新等级。if samountrs_rebateall("sum") thennewgrade=rs_rebateall("grade")+1bz=1elseif bz=0 then newgrade=0end ifrs_rebateall.movenextwend'等级最大到4if newgrade4 then newgrade=4'更改会员信息表中的等级。sql_newgrade="update DB_member set grade='"&newgrade&"' where ID= '"&parID&"'"conn.execute sql_newgrade%!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312"title收银台结账!/titlelink href="style.css" rel="stylesheet"style type="text/css"!--body {background-image: url(images/bg1.jpg);}--/style/headbody leftmargin="0" topmargin="0"centertable width="640" height="133" border="0" cellpadding="-1" cellspacing="-1"trtd background="images/bg.jpg"img src="images/checkout.gif" width="640" height="130"/td/tr/tabletable width="640" height="341" border="0" cellpadding="-1" cellspacing="-1"trtd valign="top" background="images/bg.jpg" div align="center"form name="form1" method="POST"table width="97%" height="153" border="0" cellpadding="-1" cellspacing="-1"trtd height="71"div align="center"strongfont color="#C60001" size="3"!!--从折扣率记录表中取出折扣率作为优惠率--您本次购物享受%=(rs_rebate.Fields.Item("rebate").Value)%优惠!br您本次消费金额为%= sum_1%元,实际应付费用%=sum%元。/font/strong strongfont color="#C60001" size="3"/font/strong/div/td/trtrtddiv align="center"strongfont color="#C60001" size="3"结账已经完成,欢迎下次惠顾!/font/strong/div/td/tr/table/forma href="http://cms.ddvip.com/index.php#" onClick="JScript:window.close();"img src="images/home1.gif"width="75" height="34" border="0"/a/div/td/tr/table/center!--CSng 函数 :返回表达式,该表达式已被转换为 Single 子类型的 Variant。--/body/html%session.Abandon()%
Checkout_fail.asp 收银台登录失败提示页面。