asp+flash读取数据库的记录呀?
如何在flash中调用asp读取数据库的内容呀,能给我一各简单的例子吗? 问题点数:100、回复次数:12Top
1 楼mrshelly(Shelly)回复于 2004-08-02 13:53:58 得分 0
在ASP中把变量以
&变量名=值&
&变量名=值&
&变量名=值&
&变量名=值&
的方式输出就OK了。
在 FLASH LoadVar就成。就可以直接用变量的值了。
Top
2 楼ttt2(孩子她爸)回复于 2004-08-02 13:57:20 得分 0
上www.flash8.net看看去Top
3 楼haigang(零下一度)回复于 2004-08-02 14:11:31 得分 0
能给我一个简单的例子吗
我不会写语句呀Top
4 楼haigang(零下一度)回复于 2004-08-03 10:20:07 得分 0
问题还没有解决,大家帮忙呀!Top
5 楼verystrong()回复于 2004-08-03 10:45:46 得分 40
你到flash流媒体论坛去搜一下,有很多。以下是我以前收藏的文章
第4卷 FlashMX数据库间接操作之中文代码解决方案
原创:THOR (转载者请保留“作者:THOR”等字样,QQ 488915,Email coolthor@163.com)
声明:对ActionScript和ASP不感兴趣者以及认为FLASH只能做动画片者,请Get OUT!
留言:呵呵,本人初来乍到,希望大家多多支持,要是写了文章能加专家分就好了
--------------------------------------------------------------------------
在前面的几卷中我们已经初步的了解了FLASH与数据库的加接原理和基本方法,现在我们将从本卷开始进行实战演习 ^_^
本卷将向大家讲述怎样完成一个具备基本功能的会员注册和会员档案功能。
很多刚开始与ASP连接的朋友经常会提到同一个问题,就是无法正确的从ASP或者文本文件中读取到汉字或者全角字符,关于这个问题嘛,当年我也蛮头大的,呵呵,其实只要在FLASH中加一条指令就行了,就是在连接ASP之前加上System.useCodePage=true;就可以了(建议将此命令放在第一帧的第一行)
对了,有一个非常重要的问题忘了告诉大家,各位在使用LoadVars对象向ASP发送数据时,建议使用POST方法,尽量不要用GET方法,因为那样的话……嘿嘿 ^_^ (俺先卖个关子再说,反正大家照我说的做绝对对各位都有好处,可以少走弯路,至于为什么嘛,大家自己试试GET和POST的区别就明白了,多动手对大家都有好处嘛,呵呵)
现在我们已经解决了FLASH与ASP之间的中文问题,下面我们将要准备开始实现会员的注册功能。我们首先建立一个ACCESS 2000格式的数据库,然后在数据库中创建一个数据表,并为它命名为user,接下来我们在这个数据表中创建三个字段,分别是id,user,pass,然后我们分别将这三个字段设为主键字段、20个字符长度文本字段和60个字符长度的文本字段,设置好之后,我们关闭这个数据库,并打开记事本(当然,用其它编辑器也可以),我们创建下面这个ASP文件(我们将用这个ASP文件来实现会员注册功能):
<%
dim strUser,strPass,strOutput,strSQL,db
strUser=trim(Request.form("user")) '获取POST数据中的USER参数
strPass=trim(Request.form("pass")) '获取POST数据中的PASS参数
strSQL="insert into user (user,pass) values ('"&strUser&"','"&strPass&"')" '生成SQL语句
db="test.mdb" '数据库文件名
Set conn = Server.CreateObject("ADODB.Connection")
connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(db)
conn.Open connstr '打开数据库连接
if len(strUser)<1 or len(strUser)>20 then
strOutput="用户名须1至20个字以内" '检查用户名长度
else
if len(strPass)<3 or len(strPass)>60 then
strOutput="密码须3至60个字以内" '检查密码长度
else
set rs = server.CreateObject("ADODB.Recordset")
rs.open "Select top 1 * from user where user = '" & strUser & "'",conn,2,3 '检查同名用户
if rs.eof then
conn.execute strSQL '执行SQL语句
strOutput="注册成功"
else
strOutput="用户已存在"
rs.close
set rs=nothing
end if
end if
end if
conn.close
set conn=nothing
response.write "aspAction=REG&aspRect=" & strOutput '输出结果
%>
这样我们就写好了注册功能的ASP文件,接下来,我们再创建另一个ASP文件,用来显示会员的信息,代码如下:
<%
dim parID,strUser,strPass
parID=Request.form("id") '获取POST数据中的PASS参数
if parID<1 then parID=0
db="test.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(db)
conn.Open connstr '打开数据库连接
set rs = server.CreateObject("ADODB.Recordset")
rs.open "select top 1 * from user where id = " & parid,conn,2,3
if rs.eof then
strUser="不存在的用户记录"
strPass="不存在的用户记录"
else
strUser=rs("user")
strPass=rs("pass")
end if
rs.close
conn.close
set conn=nothing
response.write "aspAction=READ&aspUser=" & strUser & "&aspPass=" & strPass '输出结果
%>
好了,到此为止,数据库和ASP部分我们已经基本就绪了,我们现在就要开始FLASH部分的编写,说到FLASH和用户注册问题,有些事得先说一下,各位在做会员信息的时候最好还是别直接在数据库里面存下会员的密码,这样不好,呵呵,还是用些什么MD5啊之类的算法加密一下,我这里就有一代FLASH版的MD5函数,大家复制到FLASH里面就可以直接引用了,地址是http://expert.csdn.net/Expert/TopicView1.asp?id=2022597,使用方法嘛,直接用trace(md5("password"))就可以了,哦,说到这里又得再罗索两句了,很多人问我trace是干什么,唉,不是我没耐心,这个真的很简单,就是在FLASHMX里面弹一个小窗口出来显示数据,主要是用来调试代码的,比如说看一下一个变量的值 trace(a);就是显示变量a的值咯,很简单,大家自己动手试试就知道了
好了,言归正传,准备写FLASH代码!,在我们下面要做的FLASH代码中需要同时可能不止一次的重复调用上面的两个ASP文件,所以我在上面的那个ASP文件中都写了aspAction这个变量,一个是返回“READ”字串,另一个是返回"REG"字串,这样的话我们就可以在FLASH中用共用的代码来识别哪一次ASP调用是来自哪一个功能,这样就可以让FLASH代码自己区别出来,然后分别去干相应的事情了。
好了,我们先在FLASH中创建一个关键帧(只需要一帧就可以了)和几个动态文本域和可输入的动态文本域,相关操作方法请自己读FLASHMX的相关教程(很简单的咯,实在不懂的话回帖提问吧),然后再创建三个按钮(分别用做“注册”、“上一条记录”、“下一条记录”),然后分别为它们命名:
txtUser 用来让别人输入要注册的用户名
txtPass 用来让别人输入要注册的密码
txtPrompt 用来显示是否注册成功的提示信息
txtCount 用来显示当前记录的主键值
datUser 用来显示当前记录中的用户名
datPass 用来显示当前记录中的密码
准备好上面这些之后,我们开始在第一帧中写入以下代码:
System.useCodePage=true; //提供中文支持,这样就可以从数据库或者ASP等文件中引用汉字和全角字符了
CurrentUserID=0; //主键值变量,默认从0开始
datUser.text="";
datPass.text="";
UpDateCount();
function UpdateCount(){ //显示当前主键的值
txtCount.text="ID = " + CurrentUserID;
}
function ReadAsp(){ //LoadVars的回调函数
switch(this["aspAction"]){
case "REG": //当运行的ASP中返回的aspAction是REG时,就作为用户注册信息进行处理
txtPrompt.text=this["aspRect"];
break;
case "READ": //当运行的ASP中返回aspAction是READ时,就作为查看用户信息进行处理
datUser.text=this["aspUser"];
datPass.text=this["aspPass"];
UpDateCount();
break;
}
}
stop();
接下来我们在“注册”按钮中写下代码:
on(release){
asp=new LoadVars();
asp.onload=ReadAsp;
asp.user=txtUser.text;
asp.pass=txtPass.text;
asp.sendAndLoad("http://thor/flashclass/userreg.asp",asp,"POST");
}
然后在“上一条记录”按钮中写下代码:
on(release){
if (CurrentUserID>1){
CurrentUserID--;
asp=new LoadVars();
asp.onLoad=readasp;
asp.id=CurrentUserID;
asp.sendAndLoad("http://thor/flashclass/userread.asp",asp,"POST");
}
}
最后在“下一条记录”按钮中写下代码:
on(release){
CurrentUserID++;
asp=new LoadVars();
asp.onload=readasp;
asp.id=CurrentUserID;
asp.sendAndLoad("http://thor/flashclass/userread.asp",asp,"POST");
}
好了,一切准备就绪了,同志们一起按CTRL+ENTER吧~`````````` ^_^
有需要本卷源码者,请拿30分来换 ,呵呵,算做稿费咯,同志们多多支持啊,多多顶贴啊,还有就是多多给我加分啊,呵呵:)
在下一卷中将向大家演示如果制作能排序,分页的列表,以及链接(以软件下载系统为例)
:::: [第4卷完] ::::
Top
6 楼xzhy80(算了吧,散了吧)回复于 2004-08-03 11:24:02 得分 0
upTop
7 楼haigang(零下一度)回复于 2004-08-03 15:04:21 得分 0
我在asp文件中 是这么写的response.write "&name="&now()
flash中
on(release){
gbdb = new LoadVars();
gbdb.loadVariables("http://tuozhan.100/read.asp",asp,"POST");
ar_title.text = gbdb["name"];
}
但是就是读不出来呀Top
8 楼AAsx(arbiter)回复于 2004-08-03 15:08:32 得分 30
asp:
response.write Server.URLEncode("name="&now())
Flash:
loadVariables("read.asp","","POST");
trace(name);
Top
9 楼haigang(零下一度)回复于 2004-08-03 15:17:51 得分 0
loadVariables("read.asp","","POST");
ar_title.text = trace(name);
楼上的,我这么写也不可以那Top
10 楼haigang(零下一度)回复于 2004-08-03 15:19:39 得分 0
其中ar_title是动态文本框的名字Top
11 楼haigang(零下一度)回复于 2004-08-03 15:20:25 得分 0
在线等待呀Top
12 楼verystrong()回复于 2004-08-04 08:56:28 得分 30
LoadVariables语句由于在读取数据时没有回调功能,也就是无法产生数据接收完毕的事件,所以,我们需要建立一个循环来判断是否接收到了数据Top




