亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

ColdFusionMX 編程指南 ColdFusionMX Basic Tag編程

2024-07-21 23:03:55
字體:
來源:轉載
供稿:網友

第四期:ColdFusionMX Basic Tag編程

序言

      任何一種程序再簡單也要具備一定的邏輯和算法,Coldfusion也不例外。如果只是靠簡單的標簽的堆砌,是無法真正實現企業商業邏輯的。而且,我在這里非常肯定的提出一點,就是簡單絕對不等于功能弱小。目前,網絡技術發展到了一個注重表現的時代,就是每一個開發出來的網絡應用,要在實現邏輯的同時,具備讓客戶有豐富的用戶體驗是另一個追求的目標。Flash+Flashremoting+cf serverside script就是一種極具體驗的開發手段。而對于開發工具,眾多的開發廠商更是在工具的易用性上做足了文章,微軟vs.net開發平臺的完整統一性,Oracle9i JDeveloper開發j2ee程序的wizard方式,Macromedia DreamweaverMX眾多的服務器端的腳本語言的支持,都是在工具易用性上的一種體現。我們今天要給大家講解的就是簡單易用的coldfusion loop。通過cf中不同的循環,能夠實現很多在cf中編程的邏輯。

      這里的序言還要補充說明一點,作者已經找到了操作access數據庫時的中文完全解決的方法,如果哪位開發者有興趣,請去這里查看:


 

第一部分 Basic tag編程深入

上一期我們講了操作數據庫的第一個重要的標簽,cfquery。但是我們只是講解了如何使用cfquery進行數據庫的查詢,現在我們深入講解一下cfquery的作用,然后在來講解另外兩個操作數據庫的標簽cfinsert和cfupdate。

先來看看cfsnippets這個數據庫中employees這個表的構造。

隨著教程的深入,代碼的編寫采用verdana字體的8號,并且使用籃色,請學習者注意。

我們可以使用cfquery來做數據的插入,編寫的形式非常的簡單,代碼的方式如下:

<CFTRANSACTION>

<CFQUERY NAME="test" DATASOURCE="cfsnippets">

Insert Into Employees(FirstName,lastname,email,phone,department)

Values('Mj','king','mjking@263.net','1234567','Technical')

</CFQUERY>

<CFQUERY NAME="test" DATASOURCE="cfsnippets">

Select MAX(Emp_id) as number_id

From Employees

</CFQUERY>

</CFTRANSACTION>

插入數據成功!

你新插入的id是:

<cfoutput query="test">#number_id#</cfoutput>

下面我們來講解一下上面的這一段代碼,其中最主要的部分是應用了兩個cfquery的標簽的組合,實現了數據插入和最新插入的員工id的查詢。其中第一個cfquery插入了一組記錄到Employees這個table里去,除了沒有處理emp_id這個默認的員工id的自增主鍵之外,其他的幾個字段都對應給予了插入。在插入之后,第二個cfquery做的是將剛剛插入的記錄的emp_id給查詢出來。比如我們要開發一個內部網的員工模塊,有可能在做了新員工的輸入之后,馬上系統要告知該員工的工號,就可以采用這種方式。但是會有一個問題,如果你在請求server做insert的同時,有另外一個人正好剛剛做完insert,正要查詢出他的id,這樣有可能查出的id是你的,因為這時候,系統有可能響應給對方你剛做完insert的記錄的emp_id的值。為了避免這樣的現象發現,我們在兩個cfquery之外使用了Cftransaction這個標簽。

      Cftransaction是一個協調事務處理的標簽,它把處理不同事務的作為一個整體,如果其中的某一個操作不成功,那么所有的操作都會被服務器還原(就是roll back),有這樣的功能真的是太好了。

      另外,使用cfquery還可以進行數據庫的update,讓我們來看下面的代碼:

<Cfparam name="URL.number_id" default="20">

<Cfquery name="test" datasource="cfsnippets">

       Select emp_id

       From Employees

       Where emp_id=#URL.number_id#

</Cfquery>

<cfoutput>#test.emp_id#</cfoutput>

<cfoutput>#test.recordcount#</cfoutput>

<Cfif test.RecordCount EQ 0>

              沒有這個員工記錄

              <Cfabort>

</Cfif>

<!--- 進行數據庫更新 --->

<Cfquery name="test" datasource="cfsnippets">

       Update Employees

       Set FirstName='Zerlot',

             LastName='Ma',

                email='zerlot.ma@hdtworld.com',

                phone='7654321'

                department='market'

       Where emp_id=#URL.number_id#

</Cfquery>

<cfoutput>更新成功!</cfoutput>

好,我們使用cfquery做成功了insert和update,那么下面我們開始講解cfinsert和cfupdate這兩個標簽。

在開始講解之前,我們將簡要說明一下access操作中文的問題,目前從access數據庫中把中文顯示出來還沒有解決方案,至少到2002年7月還沒有。但是,進行access數據庫的插入已經可以解決了,解決方式如下:

在你的應用根目錄下建立一個application.cfm文件,加入下面這行代碼:

<cfcontent type="text/html; charset=gb2312">

在你的每一個cfm頁面模板的開頭加入下面代碼:

<cfcontent type="text/html; charset=gb2312">

<cfset setEncoding("URL", "gb2312")>

<cfset setEncoding("Form", "gb2312")>

然后使用form表單或者cfquery進行插入中文就沒有問題了。但是從access中查詢并顯示某一條中文記錄還是有問題,目前作者還沒有確切的方法。所以作者本人的教程使用access是出于簡單,但是如果是開發者使用cfmx來開發應用的話,勸各位使用sqlserver和oracle的企業數據庫,這些數據庫都沒有什么問題。

Cfinsert和cfupdate是coldfusion中兩個常用的tag,通過點擊DreamweaverMX中CFbasic的兩個圖標來操作它們。

點擊 ColdFusionMX,ColdFusionMX編程,Basic,Tag編程 圖標,將執行cfinsert這個標簽的設定功能。點擊后的窗口如下所示:

ColdFusionMX,ColdFusionMX編程,Basic,Tag編程

以上經常用到的屬性是datasource、tablename和Formfields三個屬性,其中datasource是你在coldfusion administrator數據源設定中設置好的名稱,tablename是要更新的表,Formfields是和數據庫表中字段對應名稱一致的form控件名稱(注意必須一致才行)。我們看下面的列子:

<!--- 下面的代碼使用了cfinsert更新了數據表格,沒有使用cfquery--->

<!--- 如果表單有提交的動作,那么開始處理cfinsert動作--->

<cfif IsDefined ("form.posted")>

<cfinsert dataSource = "cfsnippets"

tableName = "Comments"

formFields = "Email,FromUser,Subject,MessText,Posted">

<h3><I>你的記錄已經被提交。</i></h3>

</cfif>

<!--- 使用cfquery顯示插入數據 --->

<cfquery name = "GetComments" dataSource = "cfsnippets">

SELECT

CommentID, EMail, FromUser, Subject, CommtType, MessText, Posted, Processed

FROM

Comments

</cfquery>

<html>

<head></head>

<h3>cfinsert</h3>

<!--- 顯示數據 --->

<table>

<tr>

<td>From User</td><td>Subject</td><td>Comment Type</td>

<td>Message</td><td>Date Posted</td>

</tr>

<cfoutput query = "GetComments">

<tr>

<td valign = top><a href = "mailt#Email#">#FromUser#</A></td>

<td valign = top>#Subject#</td>

<td valign = top>#CommtType#</td>

<td valign = top><font size = "-2">#Left(MessText, 125)#</font></td>

<td valign = top>#Posted#</td>

</tr>

</cfoutput>

</table>

<p>Next, we'll offer the opportunity to enter a comment:

<!---輸入表單--->

<form action = "cfinsert.cfm" method = "post">

<pre>

Email: <input type = "Text" name = "email">

From: <input type = "Text" name = "fromUser">

Subject:<input type = "Text" name = "subject">

Message:<textarea name = "MessText" COLS = "40" ROWS = "6"></textarea>

Date Posted: <cfoutput>#DateFormat(Now())#</cfoutput>

<!---動態顯示時間--->

<input type = "hidden"

name = "posted" value = "<cfoutput>#Now()#</cfoutput>">

</pre>

<input type = "Submit"

name = "" value = "insert my comment">

</form>

那么我們執行的結果可以看到瀏覽器顯示了我們剛剛輸入的信息,這里作者就不給出截圖,目的是讓大家自己去執行,自己去查看結果,注意,本數據庫為access,應用程序不支持中文,如果各位想測試中文,可以構建自己的應用程序來測試中文(使用sqlserver),只須在每個頁面的開頭中加入如下代碼即可:

<cfprocessingdirective pageencoding="gb2312">

<cfcontent type="text/html; charset=gb2312">

<cfset setEncoding("URL", "gb2312")>

<cfset setEncoding("Form", "gb2312")>

Cfinsert我們講解完了,那么作為作者本人,不是非常推薦使用Cfinsert,如果要做大量的數據庫的插入,我希望各位開發人員能夠靈活的使用cfquery而不是cfinsert。下面我們講解一下cfupdate這個標簽。單擊 ColdFusionMX,ColdFusionMX編程,Basic,Tag編程 圖標,會出現如下的界面:

ColdFusionMX,ColdFusionMX編程,Basic,Tag編程

各位可能看到cfupdate的窗口設置和cfinsert的很類似,是的,這兩個Tag都是對于Form表單進行專屬操作的標簽。對于cfupdate的使用方法,作者這里不想多費筆墨,它的使用和cfinsert幾乎是一樣的,同樣,我們用一段程序來看看cfupdate的作用。

程序使用了官方的一段腳本

<!--- 使用cfupdate更新數據庫 --->

<!--- 檢測course_ID這個值,如果存在則更新數據記錄--->

<cfif IsDefined("form.Course_ID")>

<!--- 檢測Course_ID是不是一個數字 --->

<cfif Not IsNumeric(form.Course_ID)>

<cfabort>

</cfif>

<!---做更新--->

<cfupdate datasource="cfsnippets"

tablename="Courses"

formfields="Descript, Course_ID">

</cfif>

<!--- 使用一個query來查看通過url傳過來的course_ID是否在對應的記錄上做了更新,各位開發人員可以使用這種查詢的技巧來驗證數據庫是否更新,而不用打開數據庫去查看--->

<cfquery name="GetCourseInfo" DATASOURCE="cfsnippets">

SELECT Number, Course_ID, Descript

FROM Courses

<cfif IsDefined("url.Course_ID")>

WHERE Course_ID = #Trim(url.Course_ID)#

</cfif>

ORDER by Number

</cfquery>

<html>

<head>

<title>CFUPDATE </title>

</head>

<body>

<H3>cfupdate更新實例</H3>

<cfif IsDefined("url.Course_ID")>

課程號:<cfoutput>#GetCourseInfo.Number#</cfoutput>

<form method="post" action="cfupdate.cfm">

<P>課程描述<BR>

<textarea name="Descript" cols="40" rows="5">

<cfoutput>#Trim(GetCourseInfo.Descript)#</cfoutput>

</textarea><br>

<input type="Hidden" NAME="Course_ID"

value="<cfoutput>#Trim(GetCourseInfo.Course_ID)#</cfoutput>">

<p><input type="Submit" value="Click to Update">

</form>

<cfelse>

<cftable query="GetCourseInfo" htmltable colheaders>

<cfcol text="<a href='cfupdate.cfm?Course_ID=#Trim(Course_ID)#'>Edit Me</a>"

width=10 header="Edit<br>this Entry">

<cfcol text="#Trim(Number)#" WIDTH="4" HEADER="Course Number">

<cfcol text="#Trim(Descript)#" WIDTH=100 HEADER="Course Description">

</cftable>

</cfif>

</body>

</html>

上面這段程序是官方的一段標準的使用cfupdate的代碼,其中包括了檢測從url傳遞過來的參數,以及對傳遞參數course_ID所在的數據庫的記錄進行更新的操作。這個程序非常精辟,希望各位開發者能夠很好的研究。其中,第一次訪問不帶參數而顯示一個記錄級的方法都非常的實用,可以用在實際的開發當中。在這里,作者從本人的開發經驗再次提出一個建議,建議大家在實際的開發當中對于經常操作數據庫的程序編寫時,能不用cfinsert和cfupdate就不用,因為這兩個tag雖然方便,但是是犧牲了靈活性和效能來取得的。希望大家使用cfquery來進行數據庫的查詢,插入和更新。

好了,下面我們輕松一下,講解兩個非常容易看懂的tag,這兩個tag在大家進行開發的過程中使用的頻率也是很高的。一個是cfinclude,另一個是cflocation。

單擊 ColdFusionMX,ColdFusionMX編程,Basic,Tag編程 中的左邊的圖標,就會使用coldfusion中的cfinclude標簽,并彈出如下的窗口:

ColdFusionMX,ColdFusionMX編程,Basic,Tag編程

這個標簽就是用來在coldfusion的某個頁面中反復使用其他的頁面模板,它與asp中的include的作用幾乎是一樣的。比如在coldfusion要嵌入一個站點統一標準的頁眉和頁腳,一個是header.cfm,另一個是footer.cfm,那么,就可以使用cfinclude來實現。

<cfinclude template="header.cfm">

使用cfinclude也有缺點,隨著企業應用的不斷發展,業務邏輯和表現兩者需要進行分離的要求越來越高,那么我們就需要進行組件的設計,這樣,完全混合邏輯和表現的cfinclude標簽就不是很適用了,但是目前的coldfusionMx有了它最新的cfc(coldfusion components),使用這個方法可以達到邏輯與表現的抽離。但是cfinclude的優點也是具有的,就是同cf component一樣可以一次性的修改頁面代碼來完成site中的所有引用,另外,cfinclude還可以包含很多的application和session的方法。

單擊上面兩個圖標中右邊的圖標,就是使用coldfusion的另外一個tag,cflocation。這個標簽起到了一個頁面跳轉的作用,它經常與cfabort使用。比如我們做一個用戶驗證的程序,當進行一些判斷之后,發現用戶并不擁有權限,那么就需要把他自動送回到首頁或者某個頁面,這個時候,我們就要使用cflocation這個標簽,例如:

<cfif form.registername EQ “”>

<cflocation url="http://www.macromedia.com" addtoken="No">

<cfabort>

</cfif>

那么我們在DreamweaverMX使用cflocation的時候,看到的設置窗口如下:

ColdFusionMX,ColdFusionMX編程,Basic,Tag編程

最后,我們要進行一下coldfusionMx中的函數說明,coldfusionMX中的函數分為15類,包括Array, Authentication,Conversion,Date/Time,Decision,Display and Formatting,Dynamic Evaluation,International,List,Mathematical,Query,String,Structure,System,XML,Other十五個種類。這些分類包括了256個coldfusion函數,應該可以滿足開發應用的需求,而且各位也還可以自己組合定義自己的function和component來使用,這樣就可以滿足開發的需要了。作者在這里不介紹Function的單獨應用了,以后會在教程中隨著程序說明一些常用的funtions。如果開發者在使用上有困難或者不明白使用的方法,可以去這個地方查看Functions的應用和示例:

http://examples.macromedia.com/coldfusion/examples/index.cfm

好了,這期的教程就講到這里,下一期,我們講解coldfusion中重要的cf Flow也就是循環。下期見!?。?/p>


 

第二部分 論壇coldfusion探討之二

l          Flash Remoting 實現 FLashMX ColdFusionMX 的通信

http://www.flashempire.net/showthread.php?s=22c923d2c64f6f43642b0b7dd40ae2ab&threadid=124099

l         你怎么得到關于官方tag的標準用例代碼

http://www.flashempire.net/showthread.php?s=22c923d2c64f6f43642b0b7dd40ae2ab&threadid=121883

l         asp.net還是cfmx?

http://www.flashempire.net/showthread.php?s=22c923d2c64f6f43642b0b7dd40ae2ab&threadid=123532

l         寵物商店部署有感

http://www.flashempire.net/showthread.php?s=22c923d2c64f6f43642b0b7dd40ae2ab&threadid=122125

l         Macromedia 尋求 solution partner

http://www.flashempire.net/showthread.php?s=22c923d2c64f6f43642b0b7dd40ae2ab&threadid=123151

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品永久免费观看| 亚洲自拍在线观看| 欧美黑人性猛交| 欧美性猛交xxxx免费看| 亚洲色图狂野欧美| 丝袜美腿亚洲一区二区| 久久夜精品香蕉| 亚洲欧美日韩久久久久久| 国产精品爱啪在线线免费观看| 欧美亚洲在线观看| 超碰日本道色综合久久综合| 欧美巨乳美女视频| 国产精品成人va在线观看| 69影院欧美专区视频| 亚洲人成电影在线观看天堂色| 成人免费午夜电影| 久久久久在线观看| 国产精品久久久久9999| 欧美最猛性xxxxx免费| 亚州欧美日韩中文视频| 欧美在线视频观看免费网站| 欧美性猛交xxxx黑人猛交| 在线观看日韩www视频免费| 日韩天堂在线视频| 亚洲黄色在线观看| 精品国产依人香蕉在线精品| 日韩国产精品亚洲а∨天堂免| 色哟哟亚洲精品一区二区| 日韩**中文字幕毛片| 正在播放亚洲1区| 久久久久久中文| 亚洲护士老师的毛茸茸最新章节| 国产精品入口免费视| 亚洲欧美资源在线| 日韩免费观看在线观看| 亚洲女人天堂视频| 视频直播国产精品| 日韩最新中文字幕电影免费看| 精品久久久久国产| 在线视频欧美性高潮| 欧美精品一本久久男人的天堂| 欧美老女人bb| 欧美又大粗又爽又黄大片视频| 久久91精品国产91久久跳| 国产成人av网址| 中文字幕无线精品亚洲乱码一区| 亚洲女性裸体视频| 国产精品人成电影在线观看| 91国语精品自产拍在线观看性色| 欧美视频专区一二在线观看| 性欧美亚洲xxxx乳在线观看| 性欧美长视频免费观看不卡| 欧美日韩高清在线观看| 岛国精品视频在线播放| 成人福利免费观看| 日韩电影免费观看在线观看| 亚洲高清福利视频| 欧美巨乳美女视频| 国产精品视频地址| 日韩中文字幕在线播放| 91精品综合久久久久久五月天| 精品视频久久久久久久| 日韩中文理论片| 精品成人乱色一区二区| …久久精品99久久香蕉国产| 91影视免费在线观看| 久久久久久成人精品| 亚洲黄色片网站| 久热精品视频在线观看| 日韩精品福利网站| 成人写真福利网| 成人黄色av网| 精品亚洲一区二区三区四区五区| 亚洲国产成人91精品| 欧美日韩福利在线观看| 亚洲码在线观看| 久久国产精品视频| 国产精品无av码在线观看| 欧美电影免费观看高清| 538国产精品一区二区在线| 国产精品色午夜在线观看| 日韩一区二区三区国产| 国内精品久久久| 在线电影欧美日韩一区二区私密| 国产美女精品视频免费观看| 精品久久久久久中文字幕大豆网| 久久九九全国免费精品观看| 2020欧美日韩在线视频| 精品日韩美女的视频高清| 国产a∨精品一区二区三区不卡| 欧美亚洲伦理www| 亚洲视频自拍偷拍| 97视频在线观看网址| 亚洲无线码在线一区观看| 国产精品久久久久久久电影| 久久色免费在线视频| 日韩中文字幕亚洲| 久久精品国产综合| 免费不卡在线观看av| 国产亚洲视频在线观看| 91极品女神在线| 亚洲欧美日韩精品| 日韩美女视频中文字幕| 成人黄色在线播放| 国产在线播放91| 亚洲人成网7777777国产| 亚洲精品免费网站| 欧美成人免费一级人片100| 国产日韩亚洲欧美| 在线日韩av观看| 日韩中文字幕不卡视频| 亚洲自拍欧美色图| 亚洲午夜久久久影院| 亚洲成人a级网| 亚洲欧美日韩精品久久亚洲区| 国产精品高潮呻吟久久av无限| 精品视频www| 欧美高清激情视频| 欧美人与性动交| 亚洲欧美国产va在线影院| 91精品国产综合久久香蕉922| 中文字幕亚洲一区二区三区五十路| 久久久久中文字幕| 国产精品精品视频| 深夜福利91大全| 成人午夜激情免费视频| 日韩精品视频在线免费观看| 日韩精品极品在线观看播放免费视频| 亚洲视频在线观看视频| 在线a欧美视频| 欧美超级免费视 在线| 亚洲一级片在线看| 国产精品福利网站| 91免费看片在线| 韩国精品美女www爽爽爽视频| 精品视频在线播放| 夜夜躁日日躁狠狠久久88av| 日韩成人网免费视频| 国产成人精品av在线| 啊v视频在线一区二区三区| 欧美久久精品一级黑人c片| 国产成人+综合亚洲+天堂| 91色p视频在线| 欧美多人爱爱视频网站| 亚洲日本中文字幕免费在线不卡| 欧美美女18p| 国产午夜精品免费一区二区三区| 日韩中文字幕精品视频| 国产视频综合在线| 国产有码在线一区二区视频| 亚洲精品日韩欧美| 久久天天躁狠狠躁夜夜躁| 成人观看高清在线观看免费| 92看片淫黄大片欧美看国产片| 亚洲视频在线观看视频| 大量国产精品视频| 久久久久久久久久久人体| 亚洲人成网站999久久久综合| 精品久久久久久电影| 美女精品视频一区| 久久精视频免费在线久久完整在线看| 色一情一乱一区二区| 成人有码视频在线播放| 国产日韩中文字幕|