LV與ASP綜合運用(二)
接上節(jié),現(xiàn)在開始第三步:“刪除”功能: 在《ASP操作數(shù)據(jù)庫入門》一節(jié)的最后,我給出了刪除一條記錄的SQL語句,不知道大家當時自己動手試驗了沒。如果沒的話也沒有關(guān)系,現(xiàn)在就跟我一起在FLASH中實現(xiàn)這個功能吧。而且我將演示如何利用“zonghe.asp”一個后臺文件實現(xiàn)所有功能。
在看代碼之前,請大家先思考這樣一個問題,如果要刪除一條記錄的話,你依據(jù)什么刪除呢?依據(jù)“yuwen”成績可以嗎?打開我們的數(shù)據(jù)庫表可以看到“毛寧”,“鞏麗”和“李小龍”都是100分,如果我們刪除語文成績?yōu)?00的記錄,就會同時把這三個人的記錄都刪除了。為了避免發(fā)生這種情況,我們一般都依據(jù)數(shù)據(jù)類型為“自動編號”的字段,因為自動編號字段是絕對不會重復(fù)的,比如這里的“xuhao”。
按照我的開發(fā)習(xí)慣,我們還是先來寫后臺,請在“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(); }else if(xuanxiang=="刪除"){ //刪除記錄演示 shanchu(); } %>
<% //——————定義“顯示”的功能函數(shù) function xianshi(){ //查詢的SQL語句 sql="select * from shujubiao order by xuhao desc"; //執(zhí)行數(shù)據(jù)庫查詢 rs.Open(sql, lianjie, 3); //從FLASH接收當前頁碼 var dangqianye=Request("dangqianye_flash"); //從FLASH接收每頁顯示的記錄條數(shù) var meiyejilu=Request("meiyejilu_flash"); //聲明一個變量用來存儲要輸出的內(nèi)容,初始為空 var shuchuneirong=""; //設(shè)置每頁顯示的記錄條數(shù) rs.PageSize=meiyejilu; //設(shè)置當前顯示的頁碼 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); } %>
<% //——————定義“刪除”的功能函數(shù) function shanchu(){ //接收從FLASH傳遞過來的序號ID var id=Request("xuhao_flash"); //刪除的SQL語句 sql="delete from shujubiao where xuhao="+id; //執(zhí)行數(shù)據(jù)庫查詢 rs.Open(sql, lianjie, 3); } %>
說明:對比上一節(jié)給出的ASP代碼,眼尖的朋友一定會發(fā)現(xiàn)有幾處不同:
- 最后一段關(guān)閉連接的代碼沒了,為什么要刪除呢?這是為了在同一個ASP文件中多次利用一個連接對象和recordset對象。其實正規(guī)的寫法里,是不推薦這么做的,這里只是為了演示和講解方便,大家以后自己做留言本的時候,建議每個功能函數(shù)里都重新聲明連接對象和recordset對象,并在函數(shù)結(jié)尾關(guān)閉。
- 最后一段加了一個“shanchu”函數(shù),它接收從FLASH傳遞過來的記錄序號,并執(zhí)行刪除語句。
- 在第三段的功能邏輯代碼區(qū),調(diào)用“shanchu”函數(shù)。
- xianshi”函數(shù)中的SQL語句最后加了一段:“order by xuhao desc”,這是讓記錄按xuhao字段倒序排列,這個是為以后“添加”功能服務(wù)的,它可以讓最新添加的記錄顯示在最上邊,便于我們觀察。這里我們可以先不用理會它。
好的,后臺文件搞定了,現(xiàn)在回到FLASH中徹底完成我們的刪除功能吧:) 打開“zonghe.fla”,輸入下面的代碼:
//================系統(tǒng)初始化================= //——————界面初始化 //編碼 System.useCodepage = true; //——————變量初始化 //聲明一個“選項”變量,ASP中將根據(jù)這個變量決定當前演示的是那項功能 //初始化這個變量為“顯示”,用來顯示記錄 var xuanxiang = "顯示"; //當前頁初始為第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(); //——————刪除功能測試 shanchu_btn.onRelease = function() { shanchu(); }; //================函數(shù)模塊區(qū)================== //——————“顯示”功能 function xianshi() { //將選項設(shè)置為“顯示” xuanxiang = "顯示"; //LV對象獲取“選項”內(nèi)容 xianshi_lv.xuanxiang_flash = xuanxiang; //獲取“當前頁” 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) { //顯示當前頁(直接從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 = "加載失!"; } }; } //——————“刪除”功能 function shanchu() { //將“選項”設(shè)置為“刪除” xuanxiang = "刪除"; //將設(shè)定為“刪除”的“選項”記錄在用于刪除的LV對象 shanchu_lv.xuanxiang_flash = xuanxiang; //獲得要刪除的記錄序號也記錄在LV對象中 shanchu_lv.xuhao_flash = shanchuxuhao_txt.text; shanchu_lv.sendAndLoad("zonghe.asp?bianliang="+random(9999), shanchu_lv, "post"); shanchu_lv.onLoad = function() { //根據(jù)ASP傳回來的“成功”進行對應(yīng)操作 if (shanchu_lv.chenggong_asp == "成功") { shanchuxuhao_txt.text = "刪除成功"; //最后調(diào)用“顯示”函數(shù),在“neirong_txt”文本框中刷新內(nèi)容顯示 xianshi(); } else { shanchuxuhao_txt.text = "刪除失敗"; } }; }
說明:上面FLASH中的代碼我們可以對比著ASP中的代碼來看,ASP中添加了刪除功能,F(xiàn)LASH中最后一段便對應(yīng)的添加了一個“shanchu”函數(shù),這個函數(shù)中的代碼,相信大家現(xiàn)在參照著注釋應(yīng)該能夠理解了吧。然后是“功能邏輯區(qū)”通過“刪除”按鈕調(diào)用刪除函數(shù)。最后還有一點小小的改動,我在這里就不考察大家的眼力了,大家注意看,我在“xianshi”函數(shù)中的第一行添加了一句:xuanxiang="顯示"。這是為了讓“xianshi”函數(shù)更加獨立,在“shanchu”函數(shù)中,當刪除完成后,我調(diào)用了“xianshi”函數(shù),以便讓大家在FLASH中及時看到刪除后的結(jié)果,如果“xianshi”中沒有定義“xuanxiang”,則在“shanchu”函數(shù)中調(diào)用“xianshi”函數(shù)時,“xuanxiang”的值依然為“shanchu”,這樣ASP中的“xianshi”函數(shù)就無法獲得正確的參數(shù),而顯示刪除后的內(nèi)容了。
好的,說了那么多,激動人心的時刻到來了,讓我們在IIS下打開“zonghe.html”測試一下吧。剛打開你會看到正確的頁碼和內(nèi)容顯示,然后,你在刪除的輸入文本框中輸入“13”,按“刪除”按鈕,當這個輸入文本框提示“刪除成功”后,你馬上會看到“記錄總數(shù)”由原來的13變成了12,內(nèi)容文本框中“xuhao”為13的記錄消失了?蓱z的“趙微”就這樣被我們輕輕一點就淘汰出局了:) 經(jīng)過這次“刪除”功能的演示,相信大家已經(jīng)對我的思路和功能擴展的方法有了一定的了解。下面我將一次性完成“添加”和“更新”功能演示!
第四步,“添加”和“更新”功能: 這一步我就不再貼代碼了,大家直接下載源文件看吧,因為實在沒什么好講的了,這一步需要做的就是按著上一步的模式,分別在ASP和FLASH添加對應(yīng)的函數(shù)塊兒,然后再在“邏輯功能區(qū)”調(diào)用對應(yīng)的功能函數(shù)就行了。都說一個組織良好的程序一開始比較復(fù)雜,越往后寫反而越輕松,我想一篇好的教程也應(yīng)該一樣吧:)
★小總結(jié):這篇教程到這里核心內(nèi)容基本上講完了,一個FLASH留言本的基本功能也差不多都實現(xiàn)了,但想象和成品的距離其實是咫尺天涯,想做一個功能完善的FLASH留言本,遠不止我講的這些內(nèi)容,這里面還有很多技巧和細節(jié),主要還是看你AS和ASP的基本功!反正捕魚的方法我是傾囊相授了,能不能捕到魚,還是要通過大家自己的實踐和努力。其實我留給大家的作業(yè)還是很多的,包括翻頁處理,管理登陸等等,但只要你真的領(lǐng)會我前面講的原理了,要自己做出來理論上確實不難?扇绻悻F(xiàn)在還是一點頭緒都沒有,恐怕很有必要把我的教程再從頭到尾重新看一遍了,用很長時間只學(xué)會一個知識點不可怕,怕就怕你用很長時間學(xué)了很多知識點,卻沒一個真正學(xué)會! 最后如果有誰通過自己的努力做出真正屬于自己的FLASH留言本了,別忘了貼上來讓火山和同志們一起欣賞欣賞,火山也算沒白忙活這么長時間了:)
LV與ASP綜合運用之一:demo4
出處:藍色理想
責任編輯:moby
上一頁 LV與ASP綜合運用之一 下一頁 其它通訊方式原理淺談
◎進入論壇Flash專欄版塊參加討論
|