asp与sql网页数据库程序设计14.docx
- 文档编号:8917674
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:35
- 大小:425.32KB
asp与sql网页数据库程序设计14.docx
《asp与sql网页数据库程序设计14.docx》由会员分享,可在线阅读,更多相关《asp与sql网页数据库程序设计14.docx(35页珍藏版)》请在冰豆网上搜索。
asp与sql网页数据库程序设计14
14
范例系统的设计
与应用
(一)
14-1 结构说明
14-2 动态菜单的设计
14-3 Cookies的处理
14-4 动态产品展示
14-5 新上市产品
14-6 索取详细信息
在前面的章节中,笔者介绍了各种SQLServer的应用、ASP程序设计的语法、ADO对象以及其他相关对象的使用等。
在下面的实务设计中,笔者将采用另外一种方式来介绍ASP程序与SQLServer的应用,也就是说,在本章中将采用范例说明的方式讲解;同时,介绍如何将范例系统快速应用在用户的工作环境中。
14-1结构说明
这个范例系统可以分为两大部分:
∙前台菜单系统。
∙后台数据管理系统。
虽然区分为两种不同性质的系统,但本质上仍离不开HTML标记、ASP程序语法、SQLQuery、ASP程序应用的各种对象等。
由于程序说明、画面展示非常多,因此在本章中仅仅介绍与“前台菜单系统”相关的子系统。
以下是组成“前台菜单系统”所使用的程序名称、功能以及所使用的程序语言、技术摘要说明。
前台菜单系统
前台菜单系统的组成,如下图所示:
“Function.asp”:
负责产生动态菜单内容。
其中所包含的程序语言有:
HTML标记,CSS,JavaScript,ASP,SQLQuery以及ADO对象等。
打开的表有:
“产品类别”以及“产品基本信息”。
“ProDuctShow.asp”:
负责产品的展示、切换以及Cookies的读写等。
所使用的程序语言有:
HTML标记,CSS,JavaScript,ASP,SQLQuery以及ADO对象等。
打开的表有:
“系统信息”、“产品基本信息”、“产品类别”以及“币别信息”等。
“MoreInfo.asp”:
负责收集客户选择的信息,并且将相关的选择信息以E-Mail的方式发送到管理员的信箱中。
所使用的程序语言有:
HTML标记、CSS,JavaScript,ASP,SQLQuery,ADO对象以及CDO对象等。
打开的表有:
“基本信息”、“系统信息”、“产品基本信息”等。
图14-1前台菜单服务的主要画面
“PdRequest.inc”:
这是一个外部引用文件,在这个文件内处理的信息为“Cookies”相关的信息;用以建立、设置、更新用户的选择信息。
虽然在“前台菜单系统”中,有这么多的子系统,但它们基本上都可以独立运行;同时,各子系统之间并没有绝对的关联性存在。
因此,如果用户觉得某一子系统非常符合自己的需求时,也可以独立地将该子系统分离,加到用户的系统中。
14-2动态菜单的设计
这是一个结合各种网页设计语言、数据库程序设计、CSS等技术的子系统。
以下是这个子系统的画面:
在上图中,除了“Login.asp”与“Address.asp”两个程序外,其他都属于“Function.asp”程序的控制范围。
在“Function.asp”程序的控制范围中,除了“关于我们”、“新上市产品”以及“索取详细信息”之外,都属于动态菜单。
所谓“动态菜单”,并不是选择之后会自动移动、自动伸展。
实际上,“动态菜单”的内容会因为产品类别的增减、上架产品的增减而自动变化。
图14-2动态菜单子系统
例如:
新增一项名为“PocketPC汽车充电器”产品之后,动态菜单上会立即自动增加一个选项。
例如:
删除“鼠标垫”,在网页重新更新内容之后,这项分类就会自动消失。
这些范例执行的结果将如图14-3所示。
图14-3自动变化的菜单内容
这些自动产生的改变,对于操作人员而言,是完全不需要更改程序,或重新编辑HTML文件的内容。
以下是“Function.asp”程序段以及设置说明。
14-2-1 设置CSS属性
本段程序代码的主要作用在于设置网页上文字表现的方式。
例如设置“颜色”、“字体大小”及“字形”等属性。
有关CSS的设置部分,请读者参考与CSS相关的书籍,在后续章节中,笔者将不再详细叙述。
“Function.asp”程序段
10:
11:
--
12:
.SystemAdmin{font-size=10pt;color:
#0000ff}
13:
.ChiDingtitle{font-size:
16pt;color:
#44FF00}
14:
.ChiDing01{font-size:
9pt;color:
#00000;font-family:
ArialBold;}
15:
.ChiDing02{font-size:
9pt;color:
#0066CC;}
16:
a:
active{color:
BlueViolet;text-decoration:
none}
17:
a:
link{color:
DarkSlateGray;text-decoration:
none}
18:
a:
visited{color:
DarkSlateGray;text-decoration:
none}
19:
a:
hover{color:
#0088DD;text-decoration:
none}
20:
-->
程序说明
本段程序主要设置各种类型的文字输出状态。
例如:
在HTML标记中指定Class=“Chiding01”时,此段文字所使用的字体即为“大小(font-size)9点(pt)”、“颜色(color)为黑色(RGB色表:
#000000即为黑色)”、“字形(font-family)为ArialBold”。
其他如:
“a:
link”则表示设置超链接属性的HTML标记,在浏览器上显示时光标、文字等的输出方式。
详细资料请读者自行参考与CSS有关的书籍。
14-2-2 固定的选项设计
下面三段程序是属于固定内容的,主要用途在于提供固定不变的功能选项。
例如“索取详细信息”,这个选项所有的功能都是由“MoreInfo.asp”程序提供;同时,这个选项也不会有其他功能。
因此,采用固定的超链接方式,打开指定的ASP程序。
“Function.asp”程序段
27:
28:
29:
30:
31:
Hand"align="absbottom"target="mainframe">
32:
33:
35:
36:
37:
38:
39:
Hand"align="absbottom"target="mainframe">
40:
41:
以及
79:
80:
81:
82:
83:
Hand"align="absbottom"target="mainframe">
84:
85:
程序说明
第31行:
提供客户端选择“关于我们”的选项。
这个选项目前并未提供超级链接的功能,用户可以自行添加必要的链接。
第39行:
指定当用户选择时,执行的ASP程序为“NewArrival.asp”。
第83行:
指定当用户选择时,执行的ASP程序为“MoreInfo.asp”。
14-2-3 动态选项的设计
“Function.asp”程序的核心与重点。
在执行这个程序段后,将会根据表的实际内容,动态产生不同的选项。
“Function.asp”程序段
43:
<%
44:
OnErrorResumeNext
45:
SQL="Select*From产品类别orderby类别编号"
46:
SetRs=OBJConn.Execute(SQL)
47:
datas=rs.getrows(500)
48:
%>
49:
<%fori=0toubound(datas,2)%>
50:
51:
52:
53:
54:
Hand"class=cItemalign="absbott-om"width="9"height="9">
55:
Hand"class=cItemalign="absbottom"><%=datas(1,i)%>
56:
57:
58:
None">
59:
<%
60:
SQL="Select*From产品基本信息Where类别编号="&datas(0,i)&"orderby产品代号"
61:
SetRs=OBJConn.Execute(SQL)
62:
ifnotrs.eofthen
63:
datas1=rs.getrows(500)
64:
%>
65:
66:
<%forJ=0toubound(datas1,2)%>
67:
68:
69:
ClassifyNo=<%=Datas(0,i)%>#<%=datas1(0,j)%>"target="mainframe"><%=datas1(1,j)%>
70:
71:
<%next%>
72:
73:
74:
<%endif%>
75:
76:
<%
77:
next
78:
%>
程序说明
第44~47行:
从“产品类别”表中取出所有记录的内容。
在第47行上,笔者使用的是ADO对象的“getrows”方法,并且限定最大的类别数量为“501”条记录。
“getrows”方法可以将SQLQuery查询结果的Recordset集合直接转换成相对应的数组,供ASP程序使用,而数组内容的排列方式则与Recordset完全相同。
例如:
上述的SQLQuery为“Select*From产品类别”,则使用“getrows”方法之后的数组内容与原表完全相同。
所产生的变量为Datas,其信息排列方式为Datas(字段,记录条数)。
例如Datas(0,0)的内容即为第一条记录的第一个字段内容(即为类别编号)。
第49行:
使用ubound函数,这个函数可以取出Datas数组变量中最大的行数(记录条数)。
第49~78行:
根据“For…Next”语句的变化,同时根据Datas数组变量的数值自动分类;并且根据所取得的“类别编号”,自“产品基本信息”中,取出符合“类别编号”的产品名称。
运作方式:
根据“For…Next”语句的变量i的数值,自动在Datas数组变量中逐条取出“类别编号”之后,接着再向“产品基本信息”表查询相符的产品信息,并且使用ADO的“getrows”方法,将查询结果的Recordset存放在Datas1数组变量中。
第69行:
使用的是Request.QueryString方法。
根据Datas以及Datas1数组变量的内容,自动产生超级链接的内容。
例如:
Datas(0,0)取出的是“0001”时,而Datas1(0,0)取出的数据是“0001000001”时,所产生的超级链接即为“PorductShow.asp?
ClassifyNo=0001#0001000001”。
这段超级链接的意思是直接执行“ProductShow.asp”程序,并且将画面自动卷动到“ProductShow.asp”输出结果的“0001000001”超级链接上。
详细说明请参考”ProductShow.asp”程序的说明内容。
14-2-4 CSS表现方式的控制
在执行这个程序片段后,在网页上可以产生选项功能的“显示”与“隐藏”效果。
“Function.asp”程序段
93:
94:
--
95:
functionDynamicFunc()
96:
{
97:
vartID,sTAG,tTag;
98:
sTAG=window.event.srcElement;
99:
if(sTAG.className=="cItem")
100:
{
101:
tID=sTAG.id+"a";
102:
tTag=document.all(tID);
103:
if(tTag.style.display=="none")
104:
{
105:
tTag.style.display="";
106:
if(sTAG.tagName=="IMG")
107:
sTAG.src="/Images/FolderOpened.gif";
108:
}
109:
else
110:
{
111:
tTag.style.display="none";
112:
if(sTAG.tagName=="IMG")
113:
sTAG.src="/Images/FolderClosed.gif";
114:
}
115:
}
116:
}
117:
cItem.onclick=DynamicFunc;
118:
//-->
119:
程序说明
这个程序段的功能为“打开或隐藏”产品名称。
当用户在调用这段程序时,请注意以下事项:
第55行:
“id="Out<%=I+1%>"”这是一个组合的内容。
其内容将会随着数值不断增加,内容将会是“id="Out1"”~“id="OutN"”。
第101行:
根据上述所产生的“id="OutN"”自动在这个字符串的最后加上“a”,用以区别CSS的属性。
在“id”最后加上“a”的程序代码则在第58行(产品名称的显示)。
有关“JavaScript语法”、“CSS”部分,请读者自行参考相关的书籍。
至此,如果用户在重新编写“Function.asp”程序之后,所有的细节都已经注意到的话,“Function.asp”即可达成本范例的表现形式。
14-3Cookies的处理
在正式进入“ProductShow.asp”程序的运行说明之前,由于这个程序主要在于处理Cookies的信息,因此必须对“PdRequest.inc”先行说明,以下是“PdRequest.inc”的程序内容。
程序内容
01:
<%
02:
ExpDate=Cstr(dateadd("d",7,date))
03:
Response.Cookies("MoreInfo").Expires=ExpDate
04:
Cookies=Request.Cookies("MoreInfo")
05:
Ifrequest.querystring("MoreInfo")<>""then
06:
IfTrim(Cookies)<>""Then
07:
Cookies=Cookies&","&request.querystring("MoreInfo")
08:
Else
09:
Cookies=request.querystring("MoreInfo")
10:
EndIf
11:
Else
12:
IfCookies=""Then
13:
Cookies=ExpDate
14:
EndIf
15:
endif
16:
Response.cookies("MoreInfo")=Cookies
17:
Datas=Split(Cookies,",")
18:
%>
程序说明
第2行:
取得与使用日期差距“七天”的正确日期,使用的是“dateadd”函数,并且在取得“七天后”的日期后,将结果转换成字符串并存放到“ExpDate”变量中。
第3行:
设置“MoreInfo”Cookies的有效期限为上述取得的日期。
第6~15行:
如果在网页中没有“ProductShow.asp”所产生的“更多信息”的选项时,将不会对“MoreInfo”的Cookies变量进行更新动作。
如果选择这个选项,则自动判断Cookies的内容并进行更新。
MoreInfo的实际内容如图14-4所示。
图14-4设备中Cookies的实际内容
上图中的“%2C”为ASCII码的“44”,即为“,”。
第12~14行:
如果客户端没有产生详细信息的需求,同时客户端的Cook-ies内容也是“空白”时,则将Cookies的内容以Cookies“到期日”取代。
第16行:
将运算之后的内容,重新写回客户端。
14-4动态产品展示
这个系统与“Function.asp”间唯一的关联在“Function.asp”程序的第69行。
例如上述程序说明中“第69行”的部分,其传送进来的内容是“ClassifyNo=0001#0001000001”。
当ASP程序以QueryString方法接受到这种数据时,将会自动删除“#”之后的数据(包含“#”在内)。
由于这种传递方式是通知浏览器自动将画面卷动到“#”之后的超级链接名称上,因此对于ASP程序而言,本段的处理方式是“不予理会”。
“ProductShow.asp”程序的执行结果如图14-5所示。
图14-5ProductShow.asp的执行结果
14-4-1 基本功能设置
在这个程序段中,笔者设置了“包括文件的置入”、“网页的表现方式”以及“记录取得条数的设置”等基本信息。
以下是这段程序的实际内容与说明。
“ProductShow.asp”程序段
01:
--#includevirtual="/PdRequest.inc"-->
02:
03:
<%
04:
Response.Expires=0
05:
MaxRecords=500
06:
07:
'ProductShow展示产品的内容
08:
SetOBJConn=Server.CreateObject("ADODB.Connection")
09:
OBJConn.Open"Trade","test","test1"
10:
OnErrorResumeNext
程序说明
第1行:
将“PdRequest.inc”程序代码包括进来。
第4行:
设置网页的内容不暂存在客户端。
由于“Products.asp”的内容会根据用户的选择随时变化,为了避免“残留(直接从客户端上取出曾经浏览过的内容)”现象的发生,笔者建议用户使用这种方式。
第5行:
设置最大记录查询条数(试想:
单一类别具有500种不同的产品时,那么产品属性上的分类一定没有规划好!
)
14-4-2 相关资料的取得
在执行这个程序段之后,将可以取得如下相关信息:
∙全图预览方式。
∙特定产品类别的产品详细信息。
∙币别信息的取得。
以下是这个程序段的实际内容与说明:
“ProductShow.asp”程序段
12:
SQL="Select全图预览方式From系统信息"
13:
SetRs=OBJConn.Execute(SQL)
14:
FullViewMethod=rs.Fields("全图预览方式")
15:
16:
SQL="Select*from产品基本信息Where类别编号="&request.querystring("ClassifyNo")&"orderby产品代号"
17:
SetRs=OBJConn.Execute(SQL)
18:
datas=rs.getrows(500)
19:
SQL="Select*from产品类别where类别编号="&request.querystring("ClassifyNo")
20:
Setrs=OBJConn.Execute(SQL)
21:
ClassifyNo=rs.fields("类别编号")
22:
ClassifyName=rs.fields("类别名称")
23:
24:
SQL="Select*From币别信息Orderby币别代号"
25:
Setrs=OBJConn.Execute(SQL)
26:
ifnotrs.eofthen
27:
Currencies=rs.getrows(MaxRecords)
28:
else
29:
Currencies=-1
30:
endif
31:
%>
程序说明
第12~14行:
取得全图预览的显示方式。
在系统设计中,全图预览方式共分为“JPG图文件的显示”以及“PDF文件的显示”。
主要的区别在于打开新窗口时,所加载文件的扩展名不同而已。
第16~18行:
从“产品基本信息”表中,取出与“类别编号”相符的所有记录,并且将这些记录存放在Datas数组变量中。
第19~22行:
从“产品类别”表中取出相关的信息。
事实上,用户也可以在上一个程序中,将相关信息转发进来。
第24~30行:
从“币别信息”表中,取出所有的币别信息,并且将查询结果存放在“Currencies”数组变量中。
14-4-3 全图预览方式的设置
本段程序代码属于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- asp sql 网页 数据库 程序设计 14