這節(jié)是重點,我寫教程的還不怕長呢,大家也要堅持住!這節(jié)將對前面講過的知識進(jìn)行一個綜合運用。下面先回顧一下前面我們都掌握了哪些技能:
1,LV與外部文本文件通訊的基本原理(變量/值配對) 2,ASP如何接收變量以及輸出內(nèi)容(Request和Response) 3,LV與ASP通訊基本原理(依舊是變量/值配對原理) 4,ASP操作數(shù)據(jù)庫基本技巧,包括: ①如何查詢并顯示數(shù)據(jù)表內(nèi)容 ②如何刪除一條記錄 ③如何添加一條新記錄 ④如何更新一條記錄 ⑤如何顯示記錄的總條數(shù) ⑥如何分頁,翻頁,以及顯示總頁數(shù),當(dāng)前頁碼和當(dāng)前頁內(nèi)容
現(xiàn)在請閉上眼睛想一下,一個簡單的FLASH留言本所包含的內(nèi)容不就這么多嗎?如果我上面講的內(nèi)容你都掌握了,還有什么理由不能自己做一個留言板呢——什么?你沒有實戰(zhàn)經(jīng)驗?好吧,這節(jié)我就連你這唯一的理由也消滅掉。這節(jié)中我將通過一個LV和ASP交互實例把上面講的內(nèi)容來一個融合。請大家先下載我提供的源文件,其中包含五個文件:zonghe.fla、zonghe.swf、zonghe.html、zonghe.asp還有上節(jié)中提供的數(shù)據(jù)庫文件shujuku.mdb。這是已經(jīng)做好的成品,大家不妨先刪除“zonghe.fla”AS貞和“zonghe.asp”中的所有代碼,跟著我的講解再一起來完成它,這樣你會有更系統(tǒng)更深刻的認(rèn)識。在此之前,你還非常有必要先在源文件中熟悉一下“zonghe.fla”里的界面布局及元件命名。為了方便講解,這里同時貼出“zonghe.swf”的界面圖示:
下面我們來逐步演示各項功能,首先是顯示記錄內(nèi)容及相關(guān)信息。
第一步:打開“zonghe.fla”,在最上層的AS貞中寫代碼:
//================系統(tǒng)初始化================= //——————界面初始化 //——————變量初始化 //——————數(shù)組初始化 //——————對象初始化 //================邏輯功能區(qū)================= //================函數(shù)模塊區(qū)=================
上面是我的習(xí)慣,先用注釋把代碼分好區(qū),然后逐步向各區(qū)中添加需要的代碼。
第二步:“顯示”記錄功能測試: 我個人習(xí)慣是:前臺界面→后臺單獨完成→前臺功能實現(xiàn)加后臺合成,所以先寫后臺。
1,在“zonghe.asp”中添加以下代碼:
<%@LANGUAGE="JAVASCRIPT"%>
<% //建立數(shù)據(jù)庫鏈接對象 lianjie = Server.CreateObject("ADODB.Connection"); //打開數(shù)據(jù)庫 lianjie.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("shujuku.mdb")); //創(chuàng)建“記錄集” rs = Server.CreateObject("ADODB.Recordset"); //設(shè)置一個選項變量,根據(jù)這個選項的值,來決定執(zhí)行對應(yīng)功能的代碼,這個變量來自FLASH var xuanxiang=Request("xuanxiang_flash"); %>
<% //——————根據(jù)變量“xuanxiang”決定調(diào)用對應(yīng)的函數(shù) //查詢顯示記錄演示 if(xuanxiang=="顯示"){ xianshi(); } %>
<% //——————定義“顯示”的功能函數(shù) function xianshi(){ //查詢的SQL語句 sql="select * from shujubiao"; //執(zhí)行數(shù)據(jù)庫查詢 rs.Open(sql, lianjie, 3); //從FLASH接收當(dāng)前頁碼 var dangqianye=Request("dangqianye_flash"); //從FLASH接收每頁顯示的記錄條數(shù) var meiyejilu=Request("meiyejilu_flash"); //聲明一個變量用來存儲要輸出的內(nèi)容,初始為空 var shuchuneirong=""; //設(shè)置每頁顯示的記錄條數(shù) rs.PageSize=meiyejilu; //設(shè)置當(dāng)前顯示的頁碼 rs.AbsolutePage=dangqianye; //獲取記錄總條數(shù) var zongtiaoshu=rs.RecordCount; //獲取總頁數(shù) var zongyeshu=rs.PageCount; //利用循環(huán)顯示一頁的所有內(nèi)容,具體的頁碼在第二段代碼的“rs.AbsolutePage”中指定了 for (i=0;i<meiyejilu;i++){ if(!rs.EOF){ //獲取字段內(nèi)容 var xuhao=rs("xuhao"); var xingming=rs("xingming"); var yuwen=rs("yuwen"); var shuxue=rs("shuxue"); //將要顯示的內(nèi)容記錄在“shuchuneirong”中 shuchuneirong =shuchuneirong+"<br>序號:"+ xuhao +" | 姓名:"+xingming+" | 語文:"+yuwen+" | 數(shù)學(xué):"+shuxue; rs.MoveNext(); } } //將查詢出來的內(nèi)容輸出成變量/值配對形式 Response.Write("&neirong_asp="+shuchuneirong); //輸出總條數(shù) Response.Write("&zongtiaoshu_asp="+zongtiaoshu); //輸出總頁數(shù) Response.Write("&zongyeshu_asp="+zongyeshu); } %>
<% //關(guān)閉記錄集對象 rs.Close(); //關(guān)閉連接對象 lianjie.Close(); %>
說明:上面的代碼有點長,大家不要害怕,其似都是前面一節(jié)講過的東西。 代碼一共有四段:第一段聲明使用JS腳本;第二段主要是一些初始化,最后一句比較重要,變量“xuanxiang”將決定下面調(diào)用那個函數(shù)以執(zhí)行對應(yīng)的功能。第三段是邏輯功能區(qū),根據(jù)變量“xuanxiang”決定調(diào)用那個函數(shù);第四段是定義的“顯示”函數(shù),用來顯示頁碼、記錄條數(shù)和記錄內(nèi)容的,而且最后還以“變量/值”配對的形式輸出它們,以便于返回FLASH。需要提示的是,這段代碼中最開始“每頁記錄數(shù)”和“當(dāng)前頁”是從FLASH傳遞過來的;最后一段代碼用來關(guān)閉記錄集對象和數(shù)據(jù)庫連接。在后臺代碼中,最重要的是,我們要明白哪些變量是要從FLASH傳遞過來的,哪些又是需要返回FLASH的。為了避免混淆,我一般把從FLASH傳遞給ASP的變量后加“_flash”,而從ASP返回FLASH的變量后則加“_asp”后綴。
2,后臺有了,回到FLASH中繼續(xù)我們的代碼吧,打開“zonghe.fla”,輸入以下代碼:
//================系統(tǒng)初始化================= //——————界面初始化 //編碼 System.useCodepage = true; //——————變量初始化 //聲明一個“選項”變量,ASP中將根據(jù)這個變量決定當(dāng)前演示的是那項功能 //初始化這個變量為“顯示”,用來顯示記錄 var xuanxiang = "顯示"; //當(dāng)前頁初始為第1頁 var dangqianye = 1; //每頁記錄數(shù)初始為5條 var meiyejilu = 5; //——————數(shù)組初始化 //——————對象初始化 //LV對象,從上到下依次用于“顯示”,“刪除”,“添加”,“更新”演示 var xianshi_lv = new LoadVars(); var shanchu_lv = new LoadVars(); var tianjia_lv = new LoadVars(); var gengxin_lv = new LoadVars(); //================邏輯功能區(qū)================== //——————顯示功能測試 xianshi(); //================函數(shù)模塊區(qū)================== //——————“顯示”功能 function xianshi() { //LV對象獲取“選項”內(nèi)容 xianshi_lv.xuanxiang_flash = xuanxiang; //獲取“當(dāng)前頁” xianshi_lv.dangqianye_flash = dangqianye; //獲取“每頁記錄數(shù)” xianshi_lv.meiyejilu_flash = meiyejilu; //將以上獲取的內(nèi)容傳遞給FLASH xianshi_lv.sendAndLoad("zonghe.asp?bianliang="+random(9999), xianshi_lv, "post"); //加載完成后顯示一系列相關(guān)信息 xianshi_lv.onLoad = function(chenggong) { if (chenggong) { //顯示當(dāng)前頁(直接從FLASH獲得) dangqianye_txt.text = dangqianye; //顯示每頁記錄數(shù)(直接從FLASH獲得) meiyetiaoshu_txt.text = meiyejilu; //顯示總條數(shù),總頁數(shù)和本頁的記錄內(nèi)容 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的三個變量“選項”,“當(dāng)前頁”,“總頁數(shù)”。另外我還聲明了四個用于各種功能演示的LV對象,以備下面需要!斑壿嫻δ軈^(qū)”的代碼非常簡單,只有一句函數(shù)調(diào)用,這正是邏輯區(qū)的精髓,通過簡潔的代碼清晰的反映功能邏輯。代碼最多的是“函數(shù)模塊區(qū)”,這里定義的是“顯示”函數(shù),注意它的數(shù)據(jù)流程,首先它將“選項”,“當(dāng)前頁”和“每頁記錄數(shù)”記錄在LV對象中,然后通過LV對象的sendAndLoad方法將這些信息發(fā)送給ASP,ASP接收到后,根據(jù)這些信息正確的輸出需要的內(nèi)容,這些內(nèi)容遵循“變量/值”配對規(guī)則,最后FLASH通過LV對象又接收到這些返回的內(nèi)容,并在接收成功后,在指定的動態(tài)文本框中顯示它們。
我們可以在IIS下運行一下“zonghe.html”看看效果,我們會看到正確頁碼信息,當(dāng)前頁顯示為1,“neirong_txt”文本框中顯示第一頁的內(nèi)容。有興趣的朋友可以自己在“zonghe.fla”中修改一下“dangqianye”和“meiyejilu”兩個變量,看看顯示結(jié)果有什么變化,思考一下導(dǎo)致這些變化的規(guī)律又是什么。
今天就到這兒吧,建議大家多動動手,自己試驗一下看能不能僅利用一個ASP文件,就把“刪除”,“更新”和“添加”功能都實現(xiàn)了。其實它們的原理跟“顯示”是相通的。等明天我寫完下一節(jié),大家再看看自己寫的代碼和我的有什么不同,也許會發(fā)現(xiàn)更多問題:)大家跟我一起加油吧!
LV與ASP綜合運用之一:demo03.rar
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 ASP操作數(shù)據(jù)庫入門 下一頁 LV與ASP綜合運用
◎進(jìn)入論壇Flash專欄版塊參加討論
|