本文给你介绍一种在flash中应用asp技术实现数据库查询的新方法,它不但在客户端完全隐藏了.asp程序,而且flash的易用性、图形化使你的网页与众不同。
基本原理
1.flash处理外部变量的方法
flash通过取frame properties中url指定的文件所输出的字符串作为自身变量及其值,这个文件可以是cgi程序或asp程序,输出的字符串必须定义成如下的格式:
company=macromedia&address=600+townsend&
city=san+francisco&zip=94103
这个字符串导入到flash后,分成4个变量并赋予不同的值,即:
利用asp中server.urlencode方法很容易实现这种格式;另外你也可以通过编程来实现:
< %@language=“vbscript”% >
< %
option explicit
dim var(3),i,count
i=0
count=3
var(0)=“red”
var(1)=“yellow”
var(2)=“blue”
do while i< count
response.write“var”&i&“=”&var(i)&“&”
i=i+1
loop
response.write“i=”&i
% >
执行这个asp程序的结果是:
var0=red&var1=yellow&var2=blue&i=3
2.在asp和flash之间传递数据
当你的asp程序产生上述格式的字符串以后,可以使用 load variables (“myscript.asp",0)的动作描述将其传入到flash中(如图1):
其中,0表示装入动画的层为第一层,1表示第二层,以此类推。
使用load variables (“myscript.asp",0,vars=post) 动作描述,asp可用以下两种方法实现从flash中取出数据 :
1、request.form(“flash_var_1")
2、request(“flash_var_1")
使用load variables (“myscript.asp",0,vars=get) 动作描述,asp从flash中取出数据的方法:
request.querystring(“flash_var_1")
实例制作
下面我们就以电话查询为例,制作一个网页。
1.创建数据库
打开access 2000,创建名为yjytelep.mdb的数据库,设计一个本单位职工电话情况的表,表名为yjytelep,格式如下:
将表和数据库保存到指定目录中,如c:\testasp\。
2.用flash制作网页
①打开flash 4,在frame 1中创建电话查询的画面,如图2。在文本编辑框上右击鼠标→properties→varible输入变量名namestr;为阻止动画向下播放,在frame 1→properties→action中选“stop”,这样,只有当你输入姓名并按 “查询”按钮,动画才继续播放。“查询”按钮上右击鼠标→properties→action描述为:
on( release)
go to and play (2)
end on
②创建frame 2,是一个blank keyframe,action描述为:
load variables (“yjytelep.asp", 0, vars=get)
③frame 3-8创建的是一个动画,告诉用户asp程序正在执行查询,如图3所示。
frame 3的action描述为:
if (handnum ne“")
go to and stop (9)
end if
frame 8的action描述为:
go to and play (3)
这样,只有asp程序查询了所有的记录并返回一个完整的记录时,才执行frame 9。
④frame 9为结果画面,如图4所示。
在“姓名”下方创建5个文本编辑框,其变量名分别为 name、utelnum、ptelnum、callnum、handnum。创建一个“返回再查”的按钮,action 描述为:
on (release)
go to and stop (1)
end on
⑤保存这个flash文件在c:\testasp中,文件名为: yjytelep.fla。然后点击file→publish,生成yjytelep.html和 yjytelep.swf。到此,flash的工作已经做完,接下来要编写asp程序了。
3.编写asp程序
打开记事本,输入以下程序并将其保存到c:\testasp中,文件名为:yjytelep.asp。
< %@language=“vbscript"% >
< %
dim ors, oconn
set ors = server.createobject(“adodb.recordset")
set oconn= server.createobject
(“adodb.connection") oconn.connectionstring =
“driver={microsoft access driver (*.mdb)};dbq=
”& server.mappath(“yjytelep.mdb")
oconn.open
ors.open “select * from yjytelep", oconn, 2, 3
ors.find “name= ‘" & request.querystring
(“namestr") & “"
if ors.eof then
response.write “name=查无此人&utelnum=-&ptelnum=
-&callnum=-&handnum=-"
else
response.write “name=" & server.urlencode(ors
(“name")) & “&utelnum=" & server.urlencode
(ors(“utelnum")) & “&ptelnum=" & server.urlencode
(ors(“ptelnum"))& “&callnum=" & server.urlencode
(ors(“callnum"))& “&handnum=" & server.urlencode
(ors(“handnum"))
end if
ors.close
set ors = nothing
oconn.close
set oconn = nothing
% >
4.执行查询
由于asp程序只能在服务器端执行,所以一定要启动你的pws或iis,并将c:\testasp设为一个web站点,否则将是一个没有结果的动画。好了,快点在你的浏览器中键入http://localhost/testasp/yjytelep.html吧(localhost指主机域名或ip 地址),其结果会令你耳目一新。