FlashMX数据库操作完全攻略-上部-第4卷

thornet 2003-07-16 04:36:09
第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卷完] :::: [待续] ::::
...全文
106 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
beggarofbeggar 2003-07-24
  • 打赏
  • 举报
回复
mark
fivestars070 2003-07-24
  • 打赏
  • 举报
回复
支持支持支持支持支持支持支持支持支持支持支持█████████支持支持
支持支持支持支持支持支持支持支持支持███████████████支持
支持支持支持支持支持支持支持无██████████████████支持
支持支持支持支持支持无████████████████支持支持支持支持
支持支持支持支持███████无███支持█████支持支持支持支持支
支持无████████████支持支持支持████支持支持支持支持支持
无██████████████支持支持支持████支持支持支持支持支持
无████████████支持支持支持无███████████支持支持
无████████████支持支持支持██████████████支持
支持██████████支持支持无██████支持无███████支持
支持支持支持支持████支持支持无████支持支持支持█████支持支
支持支持支持支持████支持支持████支持██支持无█████支持支
支持支持支持支持████支持支持████支持████无█████支持支
支持支持支持支持████支持支持████支持████无█████支持支
支持支持支持支持████支持支持████支持███支持█████支持支
支持支持支持支持████支持支持████支持███支持█████支持支
支持支持支持支持████支持支持████无████支持█████支持支
支持支持支持支持████支持支持████无████支持█████支持支
支持支持支持支持████支持支持████无████支持█████支持支
支持支持支持支持████支持支持████无████支持█████支持支
支持支持支持支持████支持支持███支持████支持█████支持支
支持██支持无█████支持支持███支持███支持无█████支持支
支持██████████支持支持无██支持██支持支持█████支持支
支持无█████████支持支持支持支持███支持支持无████支持支
支持支持无███████支持支持支持支持███无████支持支持支持支
支持支持支持██████支持支持支持无████支持█████支持支持支
支持支持支持支持无███支持支持支持█████支持无███████支持
支持支持支持支持支持支持支持支持██████支持支持无██████支持
支持支持支持支持支持支持支持无██████支持支持支持███████支
支持支持支持支持支持支持支持█████支持支持支持支持无██████支
支持支持支持支持支持支持无█████支持支持支持支持支持无████支持
支持支持支持支持支持支持███支持支持支持支持支持支持支持无███支持
wander110 2003-07-20
  • 打赏
  • 举报
回复
这位兄弟好厉害
chenyu510 2003-07-18
  • 打赏
  • 举报
回复
好的,60分也行!
PrecisionSoft 2003-07-18
  • 打赏
  • 举报
回复
我有两个邮箱:addnew@163.net sourl@163.com
回头修改邮箱个人资料去
whose 2003-07-17
  • 打赏
  • 举报
回复
几天没来, thornet(THOR) 兄弟整个个完全攻略,
帮你顶一下,
建议最好用一个帖,帖完全部攻略,免得一个个找,要不我开个收集帖。


up
gang75 2003-07-17
  • 打赏
  • 举报
回复
up
thornet 2003-07-17
  • 打赏
  • 举报
回复
我分不清谁是谁了,你们又没在自己邮箱里面写名字
PrecisionSoft 2003-07-17
  • 打赏
  • 举报
回复
thornet:唉,class2和3我不要了,你把这个代码给我吧,(有点受骗的感觉)
PrecisionSoft 2003-07-17
  • 打赏
  • 举报
回复
thornet:货已收到,谢了,呵呵
PrecisionSoft 2003-07-17
  • 打赏
  • 举报
回复
支持whose()开收集帖.最好给thornet点专家分刺激一下,5还没有出来

yanxiumei 2003-07-16
  • 打赏
  • 举报
回复
越来越贵了咯,都升到30分了。
下篇是不是40分啊。。。
晕的咯
penny8386 2003-07-16
  • 打赏
  • 举报
回复
upupupupupup upupupupupup


up
up
up
up
up up
upupupupupupupupup
PrecisionSoft 2003-07-16
  • 打赏
  • 举报
回复
顶一下,期待第5系列
thornet 2003-07-16
  • 打赏
  • 举报
回复
自己再顶!
uuncv 2003-07-16
  • 打赏
  • 举报
回复
谢谢搂主!

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧