">
<%=rsObj("id")%>
<%=rsObj("name")%>
<%=rsObj("memberPrice")%>
"Value="<%=quantity%>"Size="4"Up="checknum(quantity<%=rsObj("id")%>)"ID="Text1">
<%=rsObj("memberPrice")*quantity%>元
<%
endif
setrsObj=nothing
next
canPay=""
else
canPay="disabled"
endif
%>
总价格:<%=Sum%>元人民币
<%
'返回价格总数,以标识购物车内是否有图书
ShowCartTable=canPay
endfunction
%>
functionclean(){
if(confirm("确定要清空购物车?")==1){
window.location.href="shopCart.asp?clear=yes"}
}
functioncheckNumNull(theform){
if(theform.value==""){
alert("请填写购买图书的数量");
//theform.newprice.focus();
theform.focus();
returnfalse;
}
}
5.1.4订单管理模块
程序清单5.1.4.1提交结果表单实现代码
<%
dimorderID '此为订单编号,页面级变量
SubSubmitOrder()
dimcmdObj,rsObj,strSQL
'防止反复刷新此页
ifSession("productList")=""then
Response.Clear()
Server.Transfer"default.asp"
endif
'创建对象
SetcmdObj=Server.CreateObject("ADODB.Command")
SetrsObj=Server.CreateObject("ADODB.RecordSet")
cmdObj.CommandText="SELECTtop1*FROMOrderListORDERbyiddesc"
cmdObj.CommandType=1
Err.Clear()
ResumeNext
'开始事务,这里使用事务因为向OrderList和向OrderDetail表插入数据必须同时发生
conn.BeginTrans
SetcmdObj.ActiveConnection=conn
'打开记录集
rsObj.OpencmdObj,,2,3
'向OrderList表中添加数据
rsObj.AddNew
ifSession("memberID")<>""then
rsObj("memberID")=Session("memberID")
else
rsObj("memberID")=0'非会员
endif
rsObj("customerName")=Request.Form("customerName")
rsObj("address")=Request.Form("address")
rsObj("Zipcode")=Request.Form("Zipcode")
rsObj("phone")=Request.Form("phone")
rsObj("email")=Request.Form("email")
rsObj("payment")=Request.Form("payment")
rsObj("remark")=Request.Form("remark")
rsObj.Update
rsObj.Close
'寻找刚才添加的记录,以获取OrderList中的编号
strSQL="SELECTtop1*FROMOrderListORDERbyiddesc"
'Response.Write"aa"
setrsObj=conn.Execute(strSQL)
ifrsObj.eoforErrthen
Response.Write"bb"
Response.WriteErr.Description
'如果有错误发生,则回滚
conn.RollbackTrans()
Response.Write"数据库操作失败,请返回"
Response.End
else
orderID=rsObj("id")
'Response.Write"cc"
'Response.WriteorderID
endif
rsObj.Close()
'向OrderDetail表中添加数据
dimSum,productList,quantityArray,productArray,quantity
dimi
productList=Session("productList")
IfLen(productList)<>0Then
quantityArray=Split(Session("quantityList"),",")
productArray=Split(Session("productList"),",")
fori=0toUBound(productArray)
strSQL="SELECT*FROMproductWHEREid="&productArray(i)
rsObj.OpenstrSQL,conn,2,1
ifNotrsObj.EOForerrthen
quantity=quantityArray(i)
Ifquantity<=0Thenquantity=1
strSQL="INSERTINTOorderDetail(orderID,productID,productName,price,quantity)"
strSQL=strSQL&"VALUES("&orderID&","
strSQL=strSQL&productArray(i)&",'"
strSQL=strSQL&rsObj("name")&"',"
strSQL=strSQL&rsObj("memberPrice")&","
strSQL=strSQL&quantity&")"
Conn.Execute(strSQL)
'更新购买次数
strSQL="UpdateproductsetbuyNum=buyNum+1WHEREid="&productArray(i)
conn.execute(strSQL)
endif
next
else
Err.Raise'如果购物车为空,出错
endif
ifErrthen
conn.RollbackTrans()
Response.Write"有错误发生!,订单没有被提交,请重试"
Response.WriteErr.Description
else
'接受事务
conn.CommitTrans()
'清空购物车
Session("productList")=""
Session("quantityList")=""
Endif
'释放对象,并将连接放入连接池
rsObj.Close()
SetrsObj=Nothing
SetcmdObj=Nothing
CloseConn()
ifErrthen
Response.End
endif
endsub
'调用函数提交订单
SubmitOrder()
%>
订单已经递交,订单号为:<%=orderID%>
width="100%"borderColorLight=#aaaaaaborder=1ID="Table1">
您的购物车已经被清空,以便再次购物。
收到您的货款后,我们将按您的订单发货,请牢记您的订单号(<%=orderID%>),以便查询。
备注信息
5.1.5在线帮助模块
程序清单5.1.5.1在线帮助基本函数实现代码
<%
'=================================================
'过程名:ShowFaqList
'作用:显示常见问题列表
'参数:无
'=================================================
subShowFaqList()
dimstrSQL,rsObj,i
%>
width="100%"borderColorLight=#aaaaaaborder=1ID="Table2">
">
购物帮助
<%
strSQL="SELECTtop10*FROMfaqORDERbyHitNumDESC"
setrsObj=conn.execute(strSQL)
i=0
dowhilenot(rsObj.eoforerr)
i=i+1
%>
">
<%=i%>、"title="点击查看具体信息"><%=rsObj("question")%>(点击<%=rsObj("HitNum")%>次)
<%
rsObj.MoveNext
loop
%>
<%
endsub
'=================================================
'过程名:ShowFaqDetail
'作用:显示常见问题内容
'参数:无
'=================================================
subShowFaqDetail(FaqId)
dimrsObj,strSQL
setrsObj=Server.CreateObject("ADODB.RecordSet")
strSQL="SELECT*FROMfaqWHEREid="&FaqId
rsObj.OpenstrSQL,conn,2,3
rsObj("HitNum")=rsObj("HitNum")+1
rsObj.Update()
%>
问题:<%=rsObj("question")%>
回答:
<%=Convert(rsObj("answer"))%>
返回
`
<%
endsub
%>
5.2管理端界面设计
5.2.1管理端界面结构设计
<%ShowHeadAndMenu()%>
cellPadding=0width="100%"bgColor=#666666
borderColorLight=#aaaaaaborder=1ID="Table6">
<%callShowTheBest()%>
cellPadding=0width="100%"bgColor=#666666
borderColorLight=#aaaaaaborder=1ID="Table18">
style="border-collapse:collapse"bordercolor="#111111"ID="Table19">
<%callShowSearchForm("","")%>
cellPadding=0width="100%"bgColor=#666666
borderColorLight=#aaaaaaborder=1ID="Table2">
<%callShowNewProductPreview("Top","","","")%>
5.2.2出版商管理模块
程序清单5.2.2.1显示出版商列表实现代码
<%
DimrsObj,rsSuper,strSQL
Dimpage,thisUrl,i,bShowAdd,sAddPage
DimintID,nSuperId,szSuperName,nID,szName
'获取当前分类Id
intID=RealString(Request.QueryString("id"))
IfintID=""ThenintID="0"
'获取当前显示的页码
page=RealString(Request.QueryString("page"))
If(page=""OrIsEmpty(page))Thenpage=1
thisUrl="manuList.asp?id="&intID
Session("adminOldUrl")=thisUrl&"&page="&page
SetrsObj=Server.CreateObject("ADODB.RecordSet")
strSQL="SELECT*FROMProductTypeWHERE1=1ANDSuperID="&intID&"ORDERbyid"
'使用LockType和CursorType常量时必须在global.asa中用TypeLib声明ADO
rsObj.OpenstrSQL,conn,1,2
rsObj.pagesize=conMaxPerPage
'找它的父类,因为删除时需要传值(删除后返回父类),'返回父类'的链接也需要
strSQL="SELECT*FROMProductTypeWHEREid="&intID
SetrsSuper=Server.CreateObject("ADODB.RecordSet")
rsSuper.OpenstrSQL,conn,1,2
IfNotrsSuper.eofThen
nSuperId=rsSuper("SuperID")
szSuperName=rsSuper("Name")
Else
nSuperId=0
EndIf
rsSuper.Close()
%>
出版商管理
<%
'如果父级ID不是0,即不是顶级类型,则显示修改名称功能
ifintID<>"0"then
%>
>返回
出版商商列表
">
">
<%
endif
%>
<%
'如果从数据库中检索到数据,则以列表的方式示式
ifnot(rsObj.eoforerr)then
%>
编号
出版商商名称
修改
删除
<%
rsObj.move(page-1)*conMaxPerPage
i=1
DoWhileNot(rsObj.EOFOrErr)
nID=rsObj("id")
nSuperId=rsObj("SuperId")
szName=rsObj("Name")
%>
<%=nID%>
><%=szName%>
>修改
&SuperID=<%=nSuperId%>"="returnconfirm('确实要删除吗?');">删除
<%
i=i+1
Ifi>conMaxPerPageThenExitDo
rsObj.MoveNext()
loop
endif
'是否显示添加按钮
bShowAdd=True
'单击添加按钮后的转向页
sAddPage="manuAdd.asp"
%>
<%
'手动关闭连接,将连接放入连接池
rsObj.Close()
SetrsObj=Nothing
CloseConn()
%>
程序清单5.2.2.2将图书分类添加到下拉列表框实现代码
后台管理
添加书籍类别
类名
父类
顶级类
<%
dimrsObj,strSQL
dimtempName
dimi
setrsObj=Server.CreateObject("ADODB.RecordSet")
strSQL="SELECT*FROMProductTypeWHERESuperID=0ORDERbyid"
rsObj.OpenstrSQL,conn,2,1
i=0
dowhilenot(rsObj.eoforerr)
tempName=rsObj("name")
Response.Write""&tempName&""
ifi>100thenexitdo
i=i+1
rsObj.MoveNext
loop
rsObj.Close
SetrsObj=Nothing
CloseConn()
%>
程序清单5.2.2.3将表单数据保存到数据库实现代码
<%
dimcmbObj,rsObj
SetcmbObj=Server.CreateObject("ADODB.Command")
SetrsObj=Server.CreateObject("ADODB.RecordSet")
cmbObj.CommandText="SELECT*FROMProductTypeWHERE(idisnull)"
cmbObj.CommandType=1
SetcmbObj.ActiveConnection=conn
rsObj.OpencmbObj,,2,3
rsObj.AddNew
rsObj("name")=Request.Form("name")
rsObj("SuperID")=Request.Form("SuperID")
rsObj.Update
rsObj.Close
setrsObj=nothing
CloseConn()
%>
程序清单5.2.2.4将修改结果保存到数据库实现代码
<%
dimcmdObj,rsObj
dimszName,nID
szName=RealString(Request.Form("name"))
nID=RealString(Request.Form("ID"))
'注:此处省略对szName和nID是否为空的判断,实际中需加上!
SetcmdObj=Server.CreateObject("ADODB.Command")
SetrsObj=Server.CreateObject("ADODB.RecordSet")
cmdObj.CommandText="SELECT*FROMProductTypeWHEREid="&nID
cmdObj.CommandType=1
SetcmdObj.ActiveConnection=conn
rsObj.OpencmdObj,,2,3
rsObj("name")=szName
rsObj.Update
rsObj.Close
setrsObj=nothing
CloseConn()
%>
程序清单5.2.2.5删除出版商实现代码
<%
dimstrSQL,rsObj,rsProduct
dimintID
intID=RealString(Request.QueryString("id"))
'如果参数非法,防止传入类似manuDel.asp?id=3or1=1
ifnotIsNumeric(intID)then
Response.Write""
Response.Write"alert('您输入的数据不合法!');"
Response.Write"window.history.go(-1);"
Response.Write""
Response.End
endif
strSQL="SELECT*FROMProductTypeWHERESuperID="&intID
setrsObj=Server.CreateObject("ADODB.RecordSet")
rsObj.OpenstrSQL,conn,2,1
ifrsObj.eofthen
strSQL="SELECT*FROMProductWHEREProductType="&intID
setrsProduct=Server.CreateObject("ADODB.RecordSet")
rsProduct.openstrSQL,conn,1,1
ifrsProduct.eofthen
strSQL="DELETEFROMProductTypeWHEREid="&intID
'Response.WritestrSQL
conn.Execute(strSQL)
%>
<%
else
%>
<%
endif
%>
<%
else
%>
<%
endif
%>
5.2.3图书维护模块
程序清单5.2.3.1添加图书保存到数据库实现代码
<%
DimstrSQL,cmdObj,rsObj
DimnID,nProductType,nMemberPrice,nMarketPrice
'获取表单数据
nID=RealString(Request.Form("id"))
nProductType=Cint(Request.Form("ProductType"))
nMemberPrice=Request.Form("memberPrice")
nMarketPrice=Request.Form("marketPrice")
ifnotIsNumeric(nMemberPrice)thennMemberPrice="1"
ifnotIsNumeric(nMarketPrice)thennMarketPrice="1"
'创建对象
SetcmdObj=Server.CreateObject("ADODB.Command")
SetrsObj=Server.CreateObject("ADODB.RecordSet")
cmdObj.CommandText="SELECTtop1*FROMproductWHEREId=null"'ORDERbyiddesc"
cmdObj.CommandType=1
cmdObj.ActiveConnection=conn
callrsObj.Open(cmdObj,,2,3)
'添加数据
rsObj.AddNew()
rsObj("ProductType")=nProductType
rsObj("name")=Request.Form("name")
rsObj("memberPrice")=nMemberPrice
rsObj("marketPrice")=nMarketPrice
rsObj("introduce")=Request.Form("introduce")
rsObj("remark")=Request.Form("remark")
'更新数据库
rsObj.Update()
'关闭连接,将连接放入连接池
rsObj.Close
setrsObj=nothing
CloseConn()
%>
程序清单5.2.3.2修改图书页面实现代码
<%
dimrsObj,strSQL
dimnID,nTypeId,szName,MemberPrice,MarketPrice,szIntro,szRemark
'获取要修改的图书ID
nID=RealString(Request.QueryString("id"))
'组织SQL语句
strSQL="SELECT*FROMproductWHEREid="&nID
'查询结果,因为只是读取结果,所以用默认的CursorType和LockType即可
setrsObj=conn.Execute(strSQL)
ifrsObj.eoforerrthen
Response.Write"有错误发生,该图书可能已被删除,返回"
Response.End()
endif
nTypeId=rsObj("ProductType")
szName=rsObj("Name")
MemberPrice=rsObj("MemberPrice")
MarketPrice=rsObj("MarketPrice")
szIntro=rsObj("Introduce")
szRemark=rsObj("Remark")
'关闭记录集,释放内存
rsObj.Close()
SetrsObj=Nothing
'此时还不能关闭连接,因为下面用到了TypeToSelect函数
%>
图书修改
修改图书
图书类别
<%
callTypeToSelect(nTypeId,"ProductType")
'尽早关闭连接,将连接放入连接池
CloseConn()
%>
">
产品名称
">
会员价
">
¥
市场价
">
¥
产品简介
<%=szIntro%>>
产品说明
<%=szRemark%>>
';">
程序清单5.2.3.3保存上传图书封面实现代码
<%
dimuploadObj,szPath,fileObj,szFileName,tmp
dimstrSQL
dimnID,szType
setuploadObj=newupload_5xSoft
setfileObj=uploadObj.File("filePic") '与上传表单中的file1相对应
nID=uploadObj.Form("id")
szType=uploadObj.Form("type")
'判断参数是否正确
ifnID=""orszType=""then
Response.Write"有错误发生,无法获取上传参数"
Response.Write"[关闭]"
Response.End()
endif
szPath="../"&szType&"/"
iffileObj.FileSize>0then'如果FileSize>0说明有文件数据
tmp=fileObj.FileName
'以nID+原文件扩展名重新命名上传文件
szFileName=nID&right(tmp,(len(tmp)-InStrRev(tmp,".")+1))
Response.WriteszFileName
fileObj.SaveAsServer.MapPath(szPath&szFileName)'保存文件
endif
strSQL="UPDATEproductSET"&szType&"='"&szFileName&"'WHEREid="&nID
conn.Execute(strSQL)
'释放对象,关闭连接
setfileObj=nothing
CloseConn()
%>
程序清单5.2.3.4设置图书的推荐状态实现代码
<%
dimstrSQL
dimnID
nID=RealString(Request.QueryString("id"))
'如果参数非法,防止传入类似manuDel.asp?id=3or1=1
ifnotIsNumeric(nID)then
Response.Write""
Response.Write"alert('您输入的数据不合法!');"
Response.Write"window.history.go(-1);"
Response.Write""
Response.End
endif
'组织SQL语句
strSQL="UPDATEProductSETRecommend=(1-Recommend),"
strSQL=strSQL+"RecommendDate='"&Now()&"'WHEREid="&nID
'执行SQL语句
conn.execute(strSQL)
CloseConn()
%>
5.2.4会员维护模块
程序清单5.2.4.1显示会员里列表实现代码
<%
dimrsObj,strSQL
dimpage,myKeyword,thisUrl,i,bShowAdd
myKeyword=Request.Form("myKeyword")
page=Request.QueryString("page")
if(page=""orIsEmpty(page))thenpage=1
thisUrl="memberList.asp?myKeyword="&myKeyword
Session("adminOldUrl")=thisUrl&"&page="&page
setrsObj=Server.CreateObject("ADODB.RecordSet")
strSQL="SELECT*FROMMemberWHERE1=1"
ifnot(myKeyword=""orIsEmpty(myKeyword))then
strSQL=strSQL&"ANDNamelike'%"&myKeyword&"%'"
endif
strSQL=strSQL&"ORDERbyMemberid"
'Response.WritestrSQL
'Response.End
rsObj.OpenstrSQL,conn,1,2
rsObj.pagesize=conMaxPerPage
%>
会员管理
会员管理
会名姓名(模糊查询):
">
会员账号
会员姓名
性别
Email
电话
邮政编码
删除
<%
dimrsID
i=1
ifnot(rsObj.eoforerr)thenrsObj.move(page-1)*conMaxPerPage
dowhilenot(rsObj.eoforerr)
rsID=rsObj("memberID")
%>
'">
<%=rsObj("memberID")%>
<%=rsObj("name")%>
<%=rsObj("sex")%>
<%=rsObj("email")%>
<%=rsObj("phone")%>
<%=rsObj("Zipcode")%>
')">删除
<%
i=i+1
ifi>conMaxPerPagethenexitdo
rsObj.MoveNext
loop
%>
<%bShowAdd=False%>
<%
rsObj.Close()
setrsObj=Nothing
CloseConn()
%>
程序清单5.2.4.2将修改后的会员信息保存到数据库实现代码
<%
dimcmdObj,rsObj
dimszName,nID
szName=RealString(Request.Form("name"))
nID=RealString(Request.Form("ID"))
'注:此处省略对szName和nID是否为空的判断,实际中需加上!
SetcmdObj=Server.CreateObject("ADODB.Command")
SetrsObj=Server.CreateObject("ADODB.RecordSet")
cmdObj.CommandText="SELECT*FROMProductTypeWHEREid="&nID
cmdObj.CommandType=1
SetcmdObj.ActiveConnection=conn
rsObj.OpencmdObj,,2,3
rsObj("name")=szName
rsObj.Update
rsObj.Close
setrsObj=nothing
CloseConn()
%>
5.2.5订单维护模块
程序清单5.2.5.1发货处理实现代码
<%
dimstrSQL,cmdObj,rsObj
dimnID
nID=RealString(Request.Form("id"))
SetcmdObj=Server.CreateObject("ADODB.Command")
SetrsObj=Server.CreateObject("ADODB.RecordSet")
cmdObj.CommandText="SELECT*FROMOrderListWHEREid="&nID
cmdObj.CommandType=1
SetcmdObj.ActiveConnection=conn
'查找待修改的记录
rsObj.OpencmdObj,,2,3
rsObj("state")=1 '设置为已处理
rsObj("treatedDate")=now() '处理日期
rsObj("treatedRemark")=Request.Form("treatedRemark") '处理说明
rsObj.Update
'关闭连接,将连接放放连接池
rsObj.Close
setrsObj=nothing
setcmdObj=nothing
CloseConn()
%>
5.2.6查看发货模块
程序清单5.2.6.1查看已发货清单实现代码
<%
dimrsObj,strSQL
setrsObj=Server.CreateObject("ADODB.RecordSet")
strSQL="SELECT*FROMOrderListWHEREid="&RealString(Request.QueryString("id"))
rsObj.OpenstrSQL,conn,2,1
%>
查看订单
查看订单
a
订单详细资料......
订单号
<%=rsObj("id")%>
客户账号
<%=rsObj("memberID")%>
收货人姓名
<%=rsObj("customerName")%>
收货人地址
<%=rsObj("address")%>
邮政编码
<%=rsObj("Zipcode")%>
联系电话
<%=rsObj("phone")%>
电子邮件
<%=rsObj("email")%>
付款方式
<%=rsObj("payment")%>
备注
<%=rsObj("remark")%>
订货日期
<%=rsObj("createDate")%>
发货日期
<%=rsObj("treatedDate")%>
发货备注
<%=rsObj("treatedRemark")%>
a
订书明细......
<%
'手机明细
strSQL="SELECT*FROMorderDetailWHEREorderID="&RealString(Request.QueryString("id"))
setrsObj=conn.execute(strSQL)
%>
图书编号
图书名称
图书价格
图书数量
金额小计
<%
dimtotalPrice
totalPrice=0
dowhile(notrsObj.eoforerr)
%>
<%=rsObj("productID")%>
<%=rsObj("productName")%>
<%=rsObj("price")%>
<%=rsObj("quantity")%>
<%ifrsObj("price")<>""ANDrsObj("quantity")<>""thenResponse.WritersObj(
上一篇:ASP+ACCESS深水蓝文学网站(论文和程序)
下一篇:试析影响公路路面平整度的因素及应采取的施工措施