这节是重点,我写教程的还不怕长呢,大家也要坚持住啊!这节将对前面讲过的知识进行一个综合运用。下面先回顾一下前面我们都掌握了哪些技能:
1,LV与外部文本文件通讯的基本原理(变量/值配对) 2,ASP如何接收变量以及输出内容(Request和Response) 3,LV与ASP通讯基本原理(依旧是变量/值配对原理) 4,ASP操作数据库基本技巧,包括: ①如何查询并显示数据表内容 ②如何删除一条记录 ③如何添加一条新记录 ④如何更新一条记录 ⑤如何显示记录的总条数 ⑥如何分页,翻页,以及显示总页数,当前页码和当前页内容
现在请闭上眼睛想一下,一个简单的FLASH留言本所包含的内容不就这么多吗?如果我上面讲的内容你都掌握了,还有什么理由不能自己做一个留言板呢——什么?你没有实战经验?好吧,这节我就连你这唯一的理由也消灭掉。这节中我将通过一个LV和ASP交互实例把上面讲的内容来一个融合。请大家先下载我提供的源文件,其中包含五个文件:zonghe.fla、zonghe.swf、zonghe.html、zonghe.asp还有上节中提供的数据库文件shujuku.mdb。这是已经做好的成品,大家不妨先删除“zonghe.fla”AS贞和“zonghe.asp”中的所有代码,跟着我的讲解再一起来完成它,这样你会有更系统更深刻的认识。在此之前,你还非常有必要先在源文件中熟悉一下“zonghe.fla”里的界面布局及元件命名。为了方便讲解,这里同时贴出“zonghe.swf”的界面图示:

下面我们来逐步演示各项功能,首先是显示记录内容及相关信息。
第一步:打开“zonghe.fla”,在最上层的AS贞中写代码:
//================系统初始化================= //——————界面初始化 //——————变量初始化 //——————数组初始化 //——————对象初始化 //================逻辑功能区================= //================函数模块区=================
上面是我的习惯,先用注释把代码分好区,然后逐步向各区中添加需要的代码。
第二步:“显示”记录功能测试: 我个人习惯是:前台界面→后台单独完成→前台功能实现加后台合成,所以先写后台。
1,在“zonghe.asp”中添加以下代码:
<%@LANGUAGE="JAVASCRIPT"%>
<% //建立数据库链接对象 lianjie = Server.CreateObject("ADODB.Connection"); //打开数据库 lianjie.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("shujuku.mdb")); //创建“记录集” rs = Server.CreateObject("ADODB.Recordset"); //设置一个选项变量,根据这个选项的值,来决定执行对应功能的代码,这个变量来自FLASH var xuanxiang=Request("xuanxiang_flash"); %>
<% //——————根据变量“xuanxiang”决定调用对应的函数 //查询显示记录演示 if(xuanxiang=="显示"){ xianshi(); } %>
<% //——————定义“显示”的功能函数 function xianshi(){ //查询的SQL语句 sql="select * from shujubiao"; //执行数据库查询 rs.Open(sql, lianjie, 3); //从FLASH接收当前页码 var dangqianye=Request("dangqianye_flash"); //从FLASH接收每页显示的记录条数 var meiyejilu=Request("meiyejilu_flash"); //声明一个变量用来存储要输出的内容,初始为空 var shuchuneirong=""; //设置每页显示的记录条数 rs.PageSize=meiyejilu; //设置当前显示的页码 rs.AbsolutePage=dangqianye; //获取记录总条数 var zongtiaoshu=rs.RecordCount; //获取总页数 var zongyeshu=rs.PageCount; //利用循环显示一页的所有内容,具体的页码在第二段代码的“rs.AbsolutePage”中指定了 for (i=0;i<meiyejilu;i++){ if(!rs.EOF){ //获取字段内容 var xuhao=rs("xuhao"); var xingming=rs("xingming"); var yuwen=rs("yuwen"); var shuxue=rs("shuxue"); //将要显示的内容记录在“shuchuneirong”中 shuchuneirong =shuchuneirong+"<br>序号:"+ xuhao +" | 姓名:"+xingming+" | 语文:"+yuwen+" | 数学:"+shuxue; rs.MoveNext(); } } //将查询出来的内容输出成变量/值配对形式 Response.Write("&neirong_asp="+shuchuneirong); //输出总条数 Response.Write("&zongtiaoshu_asp="+zongtiaoshu); //输出总页数 Response.Write("&zongyeshu_asp="+zongyeshu); } %>
<% //关闭记录集对象 rs.Close(); //关闭连接对象 lianjie.Close(); %>
说明:上面的代码有点长,大家不要害怕,其似都是前面一节讲过的东西。 代码一共有四段:第一段声明使用JS脚本;第二段主要是一些初始化,最后一句比较重要,变量“xuanxiang”将决定下面调用那个函数以执行对应的功能。第三段是逻辑功能区,根据变量“xuanxiang”决定调用那个函数;第四段是定义的“显示”函数,用来显示页码、记录条数和记录内容的,而且最后还以“变量/值”配对的形式输出它们,以便于返回FLASH。需要提示的是,这段代码中最开始“每页记录数”和“当前页”是从FLASH传递过来的;最后一段代码用来关闭记录集对象和数据库连接。在后台代码中,最重要的是,我们要明白哪些变量是要从FLASH传递过来的,哪些又是需要返回FLASH的。为了避免混淆,我一般把从FLASH传递给ASP的变量后加“_flash”,而从ASP返回FLASH的变量后则加“_asp”后缀。
2,后台有了,回到FLASH中继续我们的代码吧,打开“zonghe.fla”,输入以下代码:
//================系统初始化================= //——————界面初始化 //编码 System.useCodepage = true; //——————变量初始化 //声明一个“选项”变量,ASP中将根据这个变量决定当前演示的是那项功能 //初始化这个变量为“显示”,用来显示记录 var xuanxiang = "显示"; //当前页初始为第1页 var dangqianye = 1; //每页记录数初始为5条 var meiyejilu = 5; //——————数组初始化 //——————对象初始化 //LV对象,从上到下依次用于“显示”,“删除”,“添加”,“更新”演示 var xianshi_lv = new LoadVars(); var shanchu_lv = new LoadVars(); var tianjia_lv = new LoadVars(); var gengxin_lv = new LoadVars(); //================逻辑功能区================== //——————显示功能测试 xianshi(); //================函数模块区================== //——————“显示”功能 function xianshi() { //LV对象获取“选项”内容 xianshi_lv.xuanxiang_flash = xuanxiang; //获取“当前页” xianshi_lv.dangqianye_flash = dangqianye; //获取“每页记录数” xianshi_lv.meiyejilu_flash = meiyejilu; //将以上获取的内容传递给FLASH xianshi_lv.sendAndLoad("zonghe.asp?bianliang="+random(9999), xianshi_lv, "post"); //加载完成后显示一系列相关信息 xianshi_lv.onLoad = function(chenggong) { if (chenggong) { //显示当前页(直接从FLASH获得) dangqianye_txt.text = dangqianye; //显示每页记录数(直接从FLASH获得) meiyetiaoshu_txt.text = meiyejilu; //显示总条数,总页数和本页的记录内容 zongtiaoshu_txt.text = xianshi_lv.zongtiaoshu_asp; zongyeshu_txt.text = xianshi_lv.zongyeshu_asp; neirong_txt.htmlText = xianshi_lv.neirong_asp; } else { neirong_txt.htmlText = "加载失败!"; } }; }
说明:AS中的代码不难理解,首先是“界面初始”,我定义了需要传递给ASP的三个变量“选项”,“当前页”,“总页数”。另外我还声明了四个用于各种功能演示的LV对象,以备下面需要。“逻辑功能区”的代码非常简单,只有一句函数调用,这正是逻辑区的精髓,通过简洁的代码清晰的反映功能逻辑。代码最多的是“函数模块区”,这里定义的是“显示”函数,注意它的数据流程,首先它将“选项”,“当前页”和“每页记录数”记录在LV对象中,然后通过LV对象的sendAndLoad方法将这些信息发送给ASP,ASP接收到后,根据这些信息正确的输出需要的内容,这些内容遵循“变量/值”配对规则,最后FLASH通过LV对象又接收到这些返回的内容,并在接收成功后,在指定的动态文本框中显示它们。
我们可以在IIS下运行一下“zonghe.html”看看效果,我们会看到正确页码信息,当前页显示为1,“neirong_txt”文本框中显示第一页的内容。有兴趣的朋友可以自己在“zonghe.fla”中修改一下“dangqianye”和“meiyejilu”两个变量,看看显示结果有什么变化,思考一下导致这些变化的规律又是什么。
今天就到这儿吧,建议大家多动动手,自己试验一下看能不能仅利用一个ASP文件,就把“删除”,“更新”和“添加”功能都实现了。其实它们的原理跟“显示”是相通的。等明天我写完下一节,大家再看看自己写的代码和我的有什么不同,也许会发现更多问题:)大家跟我一起加油吧!
LV与ASP综合运用之一:demo03.rar
出处:蓝色理想
责任编辑:moby
上一页 ASP操作数据库入门 下一页 LV与ASP综合运用
◎进入论坛Flash专栏版块参加讨论
|