Library tutorials & articles
A complete banner advertising system
Introduction
The advertising on my site is served entirely in-house, by code freely available for you to use. This article will step you through the code.
The banners are all stored in a database table, but I don't access the database to serve the ads. Instead, at the beginning of every day the site automatically loads the ads for that day into Application variables. How the "BrandNewDay" trigger works is discussed in a related article about tracking IP addresses.
Loading the days ads
// get current advertising banners
DBInitConnection ( );
DBGetRecords ( 'SELECT BannerID,BannerDescr,BannerURL FROM Banners WHERE ClicksLeft > 0'
);
Firstly, ads "qualify" to be shown that day if there are any purchased
clickthroughs still available (for details on how I sell per clickthrough,
not impression, read this). That's done with the SQL "WHERE ClicksLeft > 0".
var sBanners = new Array;
var nBannerIDs = new Array;
var nBanners = 0;
// loop through banners
while ( !oRecordSet.EOF )
{
var nBannerID = oRecordSet ( 0 ) - 0;
var sBannerDescr = '' + oRecordSet ( 1 );
var sBannerURL = '' + oRecordSet ( 2 );
// small image to track impressions first
var sBanner = '<img src="BannerCounter.asp?ID=' + nBannerID
+ '" border=0 width=1 height=1>';
The resulting recordset is looped through, and banner ID, description and URL extracted. To track the ad impressions, a link to a small 1x1 "image" is created, with BannerCounter.asp as the target. More about that file later.
// add URL (patched through
our counter)
sBanner += '<a href="BannerCounter.asp?ID='
+ nBannerID + '&CYAredir=' + Server.URLEncode ( sBannerURL ) + '" target="CYAExternal">'
Next, the URL that will be called when the banner id clicked is assembled. The advertisers original URL, in the variable sBannerURL, is passed as a parameter into (again) BannerCounter.asp. Because I want to pass the URL into another file I have to first encode it. This replaces any special characters such as /?& into their hexadecimal equivalents.
// add image
sBanner += '<img src="images/ads/' + sBannerDescr +
'.gif" border=0 width=468 height=60></a>';
The last of the HTML, the image of the actual banner, is added to the sBanner variable...
// store banner IDs for later use
nBannerIDs [ nBanners ] = nBannerID;
sBanners [ nBanners++ ] = sBanner + '<p>';
oRecordSet.moveNext ( );
}
...and the data stored into the temporary array. The loop continues with the next record in the recordset.
// now set data into Application variables
Application.Lock ( );
Application ( 'TotalBanners' ) = nBanners;
for ( var i=0; i<nBanners; i++)
Application ( 'Banner' + i ) = sBanners [ i ];
Application.Unlock ( );
Outside the loop, after all the records have been processed and stored in the array, I finally move the data into Application variables, locking the Application first. The array was used just to make this lock/unlock section as short as possible.
Related articles
Related discussion
-
Binary Studio | software development outsourcing Ukraine
by Soft Industry (5 replies)
-
asp Request.QueryString("dir")
by realmeteo (1 replies)
-
Looking for Senior Web Designer
by lwsmedia (0 replies)
-
Read eMails from Outlook express using ASP
by kumaravelu (1 replies)
-
Help to Call ASP function from onclick event in HTML to pass an array
by vka (0 replies)
Related podcasts
-
Scott Guthrie
Scott catches up with Scott Guthrie in an interview covering Ajax, Asp 2.0, extender controls, CSS adapters and more.
This thread is for discussions of A complete banner advertising system.