让Flash与数据库通信----制作属于自己的本本
有很多网友都想有自己的Flash留言本,但是又不知道怎么做,今天就让我们学习一下flash与数据库的通信原理,做一个自己的留言本。
首先,让我们来看一下,Flash是怎么样读取文本文件里面的变量的。
Falsh 读取文本文件中的变量有二种方式:
1. 用loadVariables/loadVariablesNum获取变量;
2. 用LoadVars对象。
这次我们用相对简单些的第一种方法。
首先建立一个文本文件,命名为try.txt,内容如下:
程序代码
try1_txt=我要自己的本本&try2_txt=Hello world!
下一步,打开你的Flash新建一个文件,在第一帧新建两个文本框,分别命名为txt1,txt2中输入如代码:
程序代码
下载原文件
下面我们把try.txt文件改成try.asp,内容不变,别忘了把这句AS也改一下:
loadVariables("try.txt", this);//加载变量
改成:
loadVariables("try.asp", this);//加载变量
再测试一下,是不是一样的结果。对,应该是一样的结果。这下你应该知道,Flash读取文件对文件的后缀没有要求。
接下来,我们把try.asp的内容也改一下,改成:
程序代码
再测试一下,噫,这下怎么不行了,可能你会感到奇怪吧!!
你想想你是在什么环境下测试的!!哈哈,明白了吧!
对,你应该在iis服务器下面测试,赶快把这两个文件移到iis服务器下面去吧!
再测试,嗯,这回成功了。(不要用物理路径哟)
你也可以看下面这个链接:
http://home.goofar.com/mypage/load2.swf
这下你可以用ASP连接数据库,就是用ASP读取数据库,然后用response.write输出成Flash能读的那种格式。有朋友会问,我的数据库里面记录有很多,那怎么办?
嗯,这个问题问得好,这种情况下,我们可以用String对象的split方法,怎么实现呢?
用asp将各记录写成如下方式:
txt1=rec1#^rec2#^rec3......&txt2=reco1#^reco2#^reco3......
然后就用split方法,将txt1,txt2分割,并存入一个数组中,备用。
下面是写的一个很简单的Flash读取数据库的例子,效果:http://home.goofar.com/mypage/load3.swf
下载原文件
Asp文件:try1.asp(这个我就不多讲了)
程序代码
As代码:放在第一帧:
程序代码
呵,以上就是flash 读取数据库的基本原理,说穿了也就是flash与普通文本进行通信,只不过,这个文本是由iis服务器生成的。
各位朋友有不懂的,就留言。读取部分就写到这里了,下一节我给各位讲讲写数据库的部分!
首先,让我们来看一下,Flash是怎么样读取文本文件里面的变量的。
Falsh 读取文本文件中的变量有二种方式:
1. 用loadVariables/loadVariablesNum获取变量;
2. 用LoadVars对象。
这次我们用相对简单些的第一种方法。
首先建立一个文本文件,命名为try.txt,内容如下:
程序代码
try1_txt=我要自己的本本&try2_txt=Hello world!
下一步,打开你的Flash新建一个文件,在第一帧新建两个文本框,分别命名为txt1,txt2中输入如代码:
程序代码
+展开
-ActionScript
System.useCodepage = true;//防止乱码出现
stop();
loadVariables("try.txt", this);//加载变量
param_interval = setInterval(this, "jiazai", 100);//防止加载未完成,每隔0.1秒调用一次jiazai函数
// 判断是否加载并完成相关功能的函数
var jiazai = function () {
if (try1_txt != undefined) {
trace("加载完成,下面是获取的变量值")
txt1.text = try1_txt;
txt2.text = try2_txt;
clearInterval(param_interval);//清除时钟
play();
}
};
stop();
loadVariables("try.txt", this);//加载变量
param_interval = setInterval(this, "jiazai", 100);//防止加载未完成,每隔0.1秒调用一次jiazai函数
// 判断是否加载并完成相关功能的函数
var jiazai = function () {
if (try1_txt != undefined) {
trace("加载完成,下面是获取的变量值")
txt1.text = try1_txt;
txt2.text = try2_txt;
clearInterval(param_interval);//清除时钟
play();
}
};
下载原文件
下面我们把try.txt文件改成try.asp,内容不变,别忘了把这句AS也改一下:
loadVariables("try.txt", this);//加载变量
改成:
loadVariables("try.asp", this);//加载变量
再测试一下,是不是一样的结果。对,应该是一样的结果。这下你应该知道,Flash读取文件对文件的后缀没有要求。
接下来,我们把try.asp的内容也改一下,改成:
程序代码
+展开
-HTML
<%
response.write "try1_txt=我要自己的本本"
response.write "&try2_txt=Hello world!"
%>
response.write "try1_txt=我要自己的本本"
response.write "&try2_txt=Hello world!"
%>
再测试一下,噫,这下怎么不行了,可能你会感到奇怪吧!!
你想想你是在什么环境下测试的!!哈哈,明白了吧!
对,你应该在iis服务器下面测试,赶快把这两个文件移到iis服务器下面去吧!
再测试,嗯,这回成功了。(不要用物理路径哟)
你也可以看下面这个链接:
http://home.goofar.com/mypage/load2.swf
这下你可以用ASP连接数据库,就是用ASP读取数据库,然后用response.write输出成Flash能读的那种格式。有朋友会问,我的数据库里面记录有很多,那怎么办?
嗯,这个问题问得好,这种情况下,我们可以用String对象的split方法,怎么实现呢?
用asp将各记录写成如下方式:
txt1=rec1#^rec2#^rec3......&txt2=reco1#^reco2#^reco3......
然后就用split方法,将txt1,txt2分割,并存入一个数组中,备用。
下面是写的一个很简单的Flash读取数据库的例子,效果:http://home.goofar.com/mypage/load3.swf
下载原文件
Asp文件:try1.asp(这个我就不多讲了)
程序代码
+展开
-HTML
<% set conn= Server.CreateObject("adodb.connection")
con="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("try.mdb")
conn.open con
set rs= Server.CreateObject("adodb.recordset")
sql="select * from person order by id desc"
rs.open sql,conn,1,3
'删除最后一个多余分隔符的函数
function jiequ(str)
str=trim(str)
jiequ=left(str,len(str)-2)
end function
while not rs.eof
Person_name=Person_name&rs("name")&"^#"'其中“^#”是分隔符
Person_birthday=Person_birthday&rs("birthday")&"^#"
Person_sex=Person_sex&rs("sex")&"^#"
Person_tel=Person_tel&rs("tel")&"^#"
Person_joindate=Person_joindate&rs("joindate")&"^#"
rs.movenext
wend
Person_name=jiequ(Person_name)
Person_birthday=jiequ(Person_birthday)
Person_sex=jiequ(Person_sex)
Person_tel=jiequ(Person_tel)
Person_joindate=jiequ(Person_joindate)
Response.Write("Person_name=")
Response.Write(Person_name)
Response.Write("&")
Response.Write("Person_sex=")
Response.Write(Person_sex)
Response.Write("&")
Response.Write("Person_birthday=")
Response.Write(Person_birthday)
Response.Write("&")
Response.Write("Person_tel=")
Response.Write(Person_tel)
Response.Write("&")
Response.Write("Person_joindate=")
Response.Write(Person_joindate)
%>
con="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("try.mdb")
conn.open con
set rs= Server.CreateObject("adodb.recordset")
sql="select * from person order by id desc"
rs.open sql,conn,1,3
'删除最后一个多余分隔符的函数
function jiequ(str)
str=trim(str)
jiequ=left(str,len(str)-2)
end function
while not rs.eof
Person_name=Person_name&rs("name")&"^#"'其中“^#”是分隔符
Person_birthday=Person_birthday&rs("birthday")&"^#"
Person_sex=Person_sex&rs("sex")&"^#"
Person_tel=Person_tel&rs("tel")&"^#"
Person_joindate=Person_joindate&rs("joindate")&"^#"
rs.movenext
wend
Person_name=jiequ(Person_name)
Person_birthday=jiequ(Person_birthday)
Person_sex=jiequ(Person_sex)
Person_tel=jiequ(Person_tel)
Person_joindate=jiequ(Person_joindate)
Response.Write("Person_name=")
Response.Write(Person_name)
Response.Write("&")
Response.Write("Person_sex=")
Response.Write(Person_sex)
Response.Write("&")
Response.Write("Person_birthday=")
Response.Write(Person_birthday)
Response.Write("&")
Response.Write("Person_tel=")
Response.Write(Person_tel)
Response.Write("&")
Response.Write("Person_joindate=")
Response.Write(Person_joindate)
%>
As代码:放在第一帧:
程序代码
+展开
-ActionScript
System.useCodepage = true;//防止乱码出现
stop();
//定义存储字段的数组
var person_name_arr = new Array();
var person_sex_arr = new Array();
var person_tel_arr = new Array();
var person_birthday_arr = new Array();
var person_joindate_arr = new Array();
loadVariables("try1.asp", this);//加载变量
// 判断是否加载
var jiazai = function () {
if (Person_name != undefined) {
//trace("加载完成,下面是获取的变量值");
person_name_arr = Person_name.split("^#");//用split函数分割string
person_sex_arr = Person_sex.split("^#");
person_tel_arr = Person_tel.split("^#");
person_birthday_arr = Person_birthday.split("^#");
person_joindate_arr = Person_joindate.split("^#");
for (i=0; i this.attachMovie("show", "show"+i, i);//加载库中的show
//attachMovie不会用的点
with (this["show"+i]) {
_x = 35;
_y = 16+20*(i+1);
Personname.text = person_name_arr;//为各字段赋值
Personsex.text = person_sex_arr;
Persontel.text = person_tel_arr;
Personbirth.text = person_birthday_arr;
Personjoindate.text = person_joindate_arr;
}
}
clearInterval(param_interval);
play();
}
};
//
param_interval = setInterval(this, "jiazai", 100);
stop();
//定义存储字段的数组
var person_name_arr = new Array();
var person_sex_arr = new Array();
var person_tel_arr = new Array();
var person_birthday_arr = new Array();
var person_joindate_arr = new Array();
loadVariables("try1.asp", this);//加载变量
// 判断是否加载
var jiazai = function () {
if (Person_name != undefined) {
//trace("加载完成,下面是获取的变量值");
person_name_arr = Person_name.split("^#");//用split函数分割string
person_sex_arr = Person_sex.split("^#");
person_tel_arr = Person_tel.split("^#");
person_birthday_arr = Person_birthday.split("^#");
person_joindate_arr = Person_joindate.split("^#");
for (i=0; i
//attachMovie不会用的点
with (this["show"+i]) {
_x = 35;
_y = 16+20*(i+1);
Personname.text = person_name_arr;//为各字段赋值
Personsex.text = person_sex_arr;
Persontel.text = person_tel_arr;
Personbirth.text = person_birthday_arr;
Personjoindate.text = person_joindate_arr;
}
}
clearInterval(param_interval);
play();
}
};
//
param_interval = setInterval(this, "jiazai", 100);
呵,以上就是flash 读取数据库的基本原理,说穿了也就是flash与普通文本进行通信,只不过,这个文本是由iis服务器生成的。
各位朋友有不懂的,就留言。读取部分就写到这里了,下一节我给各位讲讲写数据库的部分!
加支付宝好友偷能量挖...