Listing 1

<!----- template: <cf_BannerAds>
use: called from index.cfm
purpose: display and record hits and click thrus of banner ads
notes:
author: e hewitt, eben@corecoldfusion.com
created date: 12/10/2002 1:01:29 PM
last modified:
------->

<cfset banner.action = #iif(IsDefined("URL.AdAction"), DE("click"), DE("display"))#>

<cfswitch expression="#banner.action#">
<cfcase value="display">
<!---get all the banner ids------->
<cfquery name="getBannerIDs" datasource="#Request.App.Datasource#">
SELECT BannerID
FROM BannerAds;
</cfquery>

<!----choose a random banner from known ids ------->
<cfset VARIABLES.RandomID = RandRange(1, getBannerIDs.RecordCount)>
<cfset VARIABLES.thisBannerID = ListGetAt((ValueList(getBannerIDs.BannerID)),
VARIABLES.RandomID)>

<!----Get a banner ad with that ID --->
<cfquery name="getOneBanner" datasource="#Request.App.Datasource#">
SELECT BannerID, ImagePath, AltText, WebsiteURL
FROM BannerAds
WHERE BannerID = #VARIABLES.thisBannerID#;
</cfquery>

<cfoutput>
<a href="index.cfm?AdAction=Click&thisURL=#
getOneBanner.WebsiteURL#&BannerID=#getOneBanner.BannerID#"
target="_blank">
<img src="images/banners/#getOneBanner.ImagePath#" alt="#getOneBanner.AltText#"
width="468" height="60" border="0"></a>
</cfoutput>

<!----update times displayed------->
<cfquery name="UpdateBanners" datasource="#Request.App.Datasource#">
UPDATE BannerAds
SET TimesDisplayed = TimesDisplayed + 1
WHERE BannerID = #VARIABLES.thisBannerID#;
</cfquery>
</cfcase>

<cfcase value="click">
<!----update click thrus. ------->
<cfquery name="UpdateBanners" datasource="#Request.App.Datasource#">
UPDATE BannerAds
SET ClickThrus = ClickThrus + 1
WHERE BannerID = #URL.BannerID#;
</cfquery>
<!----and redirect------->
<cflocation url="#URL.thisURL#">
<cfabort>
</cfcase>
</cfswitch>

Listing 2

<table border="0"> <tr>
<td colspan="2" align="center">

<!-----call the tag------->
<cf_bannerads>

</td>
</tr>
</table>