Coldfusion MX廣告輪換系統(tǒng)制作教程
更新時間:2007年03月15日 00:00:00 作者:
wait 藍色理想
CF里面沒有提供象ASP里那樣的廣告組件,但是這并不能說明就不能做出功能強大的廣告系統(tǒng),這里我放上一個簡單的廣告輪換系統(tǒng),也是我CCF論壇里面用的.功能,有顯示次數和點擊次數.在這基礎上擴展比較容易,可以分類顯示,下面的代碼只是顯示 大廣告條.只是想拋磚引玉,大家舉一反三,就能做出功能更加強大的廣告系統(tǒng)出來.
<!--- 判斷是否有地址傳遞 --->
<CFIF NOT IsDefined("URL.ADID")>
<!--- 默認為顯示廣告 --->
<CFLOCK TIMEOUT="10">
<CFPARAM NAME="Application.AD" TYPE="string" DEFAULT="">
<CFIF ListLen(Application.AD) EQ 0>
<cfquery name="getID" datasource="#DSN#">
select adid from ad
</cfquery>
<CFSET Application.AD = ValueList(getID.ADID)>
</CFIF>
<CFSET ThisAdID = ListGetAt(Application.AD, 1)>
<CFSET Application.AD = ListDeleteAt(Application.AD, 1)>
</CFLOCK>
<cfquery name="ad" datasource="#DSN#">
select * from ad
where adid='#ThisAdID#'
</cfquery>
<!--- 更新顯示次數 --->
<CFSET ADSHOW=AD.SHOW+1>
<cfquery name="updateshow" datasource="#DSN#">
UPDATE AD
SET show='#ADSHOW#'
where ADID='#AD.ADID#'
</cfquery>
<!--- 顯示廣告 --->
<a href="javascript:location.reload()">刷新</a><p>
<cfoutput query="ad">
<a href="ad.cfm?ADID=#URLEncodedFormat(ADID)#" title="#title#" target="_blank"><img src="#IMAGE#" border="0" alt="#title#"></a><p>
<br>
</cfoutput>
<cfelse>
<!--- 如果有傳遞有參數 --->
<cfquery name="gotoURL" datasource="#DSN#">
SELECT ADID,URL,CLICK FROM AD
WHERE ADID='#URL.ADID#'
</cfquery>
<!--- 點擊數加1 --->
<CFSET ADCLICK=GOTOURL.CLICK+1>
<CFQUERY DATASOURCE="#DSN#" name="UPDATECLICK">
UPDATE AD
SET CLICK='#ADCLICK#'
WHERE ADID='#URL.ADID#'
</CFQUERY>
<!--- 轉向廣告鏈接地址 --->
<cfoutput query="gotoURL">
<SCRIPT LANGUAGE="JavaScript">
self.location ='#URL#';
</SCRIPT>
</cfoutput>
</CFIF>
代碼拷貝框
以下是引用片段:
<!--- 判斷是否有地址傳遞 --->
<CFIF NOT IsDefined("URL.ADID")>
<!--- 默認為顯示廣告 --->
<CFLOCK TIMEOUT="10">
<CFPARAM NAME="Application.AD" TYPE="string" DEFAULT="">
<CFIF ListLen(Application.AD) EQ 0>
<cfquery name="getID" datasource="#DSN#">
select adid from ad
</cfquery>
<CFSET Application.AD = ValueList(getID.ADID)>
</CFIF>
<CFSET ThisAdID = ListGetAt(Application.AD, 1)>
<CFSET Application.AD = ListDeleteAt(Application.AD, 1)>
</CFLOCK>
<cfquery name="ad" datasource="#DSN#">
select * from ad
where adid='#ThisAdID#'
</cfquery>
<!--- 更新顯示次數 --->
<CFSET ADSHOW=AD.SHOW+1>
<cfquery name="updateshow" datasource="#DSN#">
UPDATE AD
SET show='#ADSHOW#'
where ADID='#AD.ADID#'
</cfquery>
<!--- 顯示廣告 --->
<a href="javascript:location.reload()">刷新</a><p>
<cfoutput query="ad">
<a href="ad.cfm?ADID=#URLEncodedFormat(ADID)#" title="#title#" target="_blank"><img src="#IMAGE#" border="0" alt="#title#"></a><p>
<br>
</cfoutput>
<cfelse>
<!--- 如果有傳遞有參數 --->
<cfquery name="gotoURL" datasource="#DSN#">
SELECT ADID,URL,CLICK FROM AD
WHERE ADID='#URL.ADID#'
</cfquery>
<!--- 點擊數加1 --->
<CFSET ADCLICK=GOTOURL.CLICK+1>
<CFQUERY DATASOURCE="#DSN#" name="UPDATECLICK">
UPDATE AD
SET CLICK='#ADCLICK#'
WHERE ADID='#URL.ADID#'
</CFQUERY>
<!--- 轉向廣告鏈接地址 --->
<cfoutput query="gotoURL">
<SCRIPT LANGUAGE="JavaScript">
self.location ='#URL#';
</SCRIPT>
</cfoutput>
</CFIF>
GAME OVER
這廣告是改自BEN FORTA的教程的.他介紹的廣告條制作方法原理都差不多,但是功能少的可憐,不能URL轉向.不能記錄顯示次數和點擊次數,所以我就改了他,自己加了些功能在里面.
原理:把廣告數據放在一個數據庫的表里面,一次提取所有的廣告編號(ID),把這ID存放在一個APPLICATION變量里面,我顯示一個,就從這個APPLICATION變量里面刪除這個顯示過的廣告ID,下次就不會顯示這個廣告條了.直到所有的廣告條都顯示過以后,如果APPLICATION變量為空了,重新查詢數據庫,調取所有的廣告ID,,,一直這樣循環(huán)下去.
提示一下:把上面保存一個文件改上你自己的數據庫行了.顯示廣告,廣告條URL轉向都在這個文件里面.
請注意這個變量:Application.AD ,這是個應用程序變量,我把他定義成一個字符串,在CF字符串里面可以這樣 Application.AD="I'm wait" 也可以這樣 Application.AD=" 1 2 3 4 5 6 7 9",我這廣告就是用后面這個
再說說這個比喻:例如我是第一次訪問.就調用Application.AD="1" 然后刪除這個Application.AD="1" 下次就只剩下:Application.AD=" 2 3 4 5 6 7 9" 一次少一個,就這實現了輪換效果.當然,一直到全部顯示完,然后重新查詢數據庫,提取所有廣告ID.放到Application.AD這個字符串里面
注意看這句:
<CFIF ListLen(Application.AD) EQ 0>
意思就是:如果我這個Application.AD 長度為0了,就重新查詢數據庫然后把查詢結果放在Application.AD變量里面.注意.要測試列表的長度不能用LEN(),而是用專門測試列表長度的函數ListLen
<cfquery name="getID" datasource="#DSN#">
select adid from ad
</cfquery>
<CFSET Application.AD = ValueList(getID.ADID)>
如果,還有沒有顯示完一次輪換,那肯定不是等于0,那就不會重新查詢數據庫.
至于得到第一個字符,可以用
<CFSET ThisAdID = ListGetAt(Application.AD, 1)>
然后刪除這個.下次就輪到下個了.
<CFSET Application.AD = ListDeleteAt(Application.AD, 1)>
重點就是這些,至于下面那些更新顯示次數,和計數顯示次數,都是普通的CF代碼.沒什么特別的.
CF里面沒有提供象ASP里那樣的廣告組件,但是這并不能說明就不能做出功能強大的廣告系統(tǒng),這里我放上一個簡單的廣告輪換系統(tǒng),也是我CCF論壇里面用的.功能,有顯示次數和點擊次數.在這基礎上擴展比較容易,可以分類顯示,下面的代碼只是顯示 大廣告條.只是想拋磚引玉,大家舉一反三,就能做出功能更加強大的廣告系統(tǒng)出來.
<!--- 判斷是否有地址傳遞 --->
<CFIF NOT IsDefined("URL.ADID")>
<!--- 默認為顯示廣告 --->
<CFLOCK TIMEOUT="10">
<CFPARAM NAME="Application.AD" TYPE="string" DEFAULT="">
<CFIF ListLen(Application.AD) EQ 0>
<cfquery name="getID" datasource="#DSN#">
select adid from ad
</cfquery>
<CFSET Application.AD = ValueList(getID.ADID)>
</CFIF>
<CFSET ThisAdID = ListGetAt(Application.AD, 1)>
<CFSET Application.AD = ListDeleteAt(Application.AD, 1)>
</CFLOCK>
<cfquery name="ad" datasource="#DSN#">
select * from ad
where adid='#ThisAdID#'
</cfquery>
<!--- 更新顯示次數 --->
<CFSET ADSHOW=AD.SHOW+1>
<cfquery name="updateshow" datasource="#DSN#">
UPDATE AD
SET show='#ADSHOW#'
where ADID='#AD.ADID#'
</cfquery>
<!--- 顯示廣告 --->
<a href="javascript:location.reload()">刷新</a><p>
<cfoutput query="ad">
<a href="ad.cfm?ADID=#URLEncodedFormat(ADID)#" title="#title#" target="_blank"><img src="#IMAGE#" border="0" alt="#title#"></a><p>
<br>
</cfoutput>
<cfelse>
<!--- 如果有傳遞有參數 --->
<cfquery name="gotoURL" datasource="#DSN#">
SELECT ADID,URL,CLICK FROM AD
WHERE ADID='#URL.ADID#'
</cfquery>
<!--- 點擊數加1 --->
<CFSET ADCLICK=GOTOURL.CLICK+1>
<CFQUERY DATASOURCE="#DSN#" name="UPDATECLICK">
UPDATE AD
SET CLICK='#ADCLICK#'
WHERE ADID='#URL.ADID#'
</CFQUERY>
<!--- 轉向廣告鏈接地址 --->
<cfoutput query="gotoURL">
<SCRIPT LANGUAGE="JavaScript">
self.location ='#URL#';
</SCRIPT>
</cfoutput>
</CFIF>
代碼拷貝框
以下是引用片段:
<!--- 判斷是否有地址傳遞 --->
<CFIF NOT IsDefined("URL.ADID")>
<!--- 默認為顯示廣告 --->
<CFLOCK TIMEOUT="10">
<CFPARAM NAME="Application.AD" TYPE="string" DEFAULT="">
<CFIF ListLen(Application.AD) EQ 0>
<cfquery name="getID" datasource="#DSN#">
select adid from ad
</cfquery>
<CFSET Application.AD = ValueList(getID.ADID)>
</CFIF>
<CFSET ThisAdID = ListGetAt(Application.AD, 1)>
<CFSET Application.AD = ListDeleteAt(Application.AD, 1)>
</CFLOCK>
<cfquery name="ad" datasource="#DSN#">
select * from ad
where adid='#ThisAdID#'
</cfquery>
<!--- 更新顯示次數 --->
<CFSET ADSHOW=AD.SHOW+1>
<cfquery name="updateshow" datasource="#DSN#">
UPDATE AD
SET show='#ADSHOW#'
where ADID='#AD.ADID#'
</cfquery>
<!--- 顯示廣告 --->
<a href="javascript:location.reload()">刷新</a><p>
<cfoutput query="ad">
<a href="ad.cfm?ADID=#URLEncodedFormat(ADID)#" title="#title#" target="_blank"><img src="#IMAGE#" border="0" alt="#title#"></a><p>
<br>
</cfoutput>
<cfelse>
<!--- 如果有傳遞有參數 --->
<cfquery name="gotoURL" datasource="#DSN#">
SELECT ADID,URL,CLICK FROM AD
WHERE ADID='#URL.ADID#'
</cfquery>
<!--- 點擊數加1 --->
<CFSET ADCLICK=GOTOURL.CLICK+1>
<CFQUERY DATASOURCE="#DSN#" name="UPDATECLICK">
UPDATE AD
SET CLICK='#ADCLICK#'
WHERE ADID='#URL.ADID#'
</CFQUERY>
<!--- 轉向廣告鏈接地址 --->
<cfoutput query="gotoURL">
<SCRIPT LANGUAGE="JavaScript">
self.location ='#URL#';
</SCRIPT>
</cfoutput>
</CFIF>
GAME OVER
這廣告是改自BEN FORTA的教程的.他介紹的廣告條制作方法原理都差不多,但是功能少的可憐,不能URL轉向.不能記錄顯示次數和點擊次數,所以我就改了他,自己加了些功能在里面.
原理:把廣告數據放在一個數據庫的表里面,一次提取所有的廣告編號(ID),把這ID存放在一個APPLICATION變量里面,我顯示一個,就從這個APPLICATION變量里面刪除這個顯示過的廣告ID,下次就不會顯示這個廣告條了.直到所有的廣告條都顯示過以后,如果APPLICATION變量為空了,重新查詢數據庫,調取所有的廣告ID,,,一直這樣循環(huán)下去.
提示一下:把上面保存一個文件改上你自己的數據庫行了.顯示廣告,廣告條URL轉向都在這個文件里面.
請注意這個變量:Application.AD ,這是個應用程序變量,我把他定義成一個字符串,在CF字符串里面可以這樣 Application.AD="I'm wait" 也可以這樣 Application.AD=" 1 2 3 4 5 6 7 9",我這廣告就是用后面這個
再說說這個比喻:例如我是第一次訪問.就調用Application.AD="1" 然后刪除這個Application.AD="1" 下次就只剩下:Application.AD=" 2 3 4 5 6 7 9" 一次少一個,就這實現了輪換效果.當然,一直到全部顯示完,然后重新查詢數據庫,提取所有廣告ID.放到Application.AD這個字符串里面
注意看這句:
<CFIF ListLen(Application.AD) EQ 0>
意思就是:如果我這個Application.AD 長度為0了,就重新查詢數據庫然后把查詢結果放在Application.AD變量里面.注意.要測試列表的長度不能用LEN(),而是用專門測試列表長度的函數ListLen
<cfquery name="getID" datasource="#DSN#">
select adid from ad
</cfquery>
<CFSET Application.AD = ValueList(getID.ADID)>
如果,還有沒有顯示完一次輪換,那肯定不是等于0,那就不會重新查詢數據庫.
至于得到第一個字符,可以用
<CFSET ThisAdID = ListGetAt(Application.AD, 1)>
然后刪除這個.下次就輪到下個了.
<CFSET Application.AD = ListDeleteAt(Application.AD, 1)>
重點就是這些,至于下面那些更新顯示次數,和計數顯示次數,都是普通的CF代碼.沒什么特別的.
相關文章
ColdFusionMX 編程指南 ColdFusionMX編程入門
ColdFusionMX 編程指南 ColdFusionMX編程入門...2007-03-03ColdFusionMX 編程指南 ColdFusionMX Basic Tag編程
ColdFusionMX 編程指南 ColdFusionMX Basic Tag編程...2007-03-03ColdFusionMX 編程指南 ColdFusionMX中的循環(huán)
ColdFusionMX 編程指南 ColdFusionMX中的循環(huán)...2007-03-03