设为首页】 【加入收藏】 【网站地图】 【商品折扣
娱乐一生 娱乐明星
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
首页  |  java  |  .NET  |  C/C++  |  网页技术  |  php  |  asp  |  delphi  |  VC  |  VB开发  |  游戏开发  |  软件工程  |  Power Builder  |  Linux开发  |  Windows开发技巧
当前位置:首页 >> ASP实例 >> 一个基于ASP的标题广告管理系统(三) _ASP实例_src119.com

一个基于ASP的标题广告管理系统(三) _ASP实例_src119.com -

三、显示广告

   这部分程序主要有如下四个目的:第一,参考各个广告的显示等级,随机选择本次显示的广告;第二,更新数据库中该广告的显示次数;第三,输出标题广告的HTML代码;第四,在数据库历史表中保存显示和点击历史纪录。

   实现上述功能的脚本主要有两个:

ShowBa er.a :确定本次调用要显示的广告,更新显示次数记录,生成标题广告的HTML代码。
Redirect.a :重定向页面。ShowBa er.a 生成的广告HTML代码将调用该脚本,由该脚本记录点击历史数据、重定向到广告客户指定的页面。
   本文下载包中的ShowBa er.a 同时也是一个广告显示示例页面,每次刷新该页面可以显示出不同的广告。下面我们按照ShowBa er.a 的执行过程,介绍其中的关键步骤。

   ㈠ 计算显示等级总和

   本系统采用的广告选择算法是:首先计算出当前所有可用广告的显示等级总和,然后根据这个和值生成一个随机数,再根据这个随机数来确定本次显示的广告。下面的代码用于计算可用广告的显示等级总和:

 nTotalWeight = 0
 strSql = " ELECT SUM( Weight ) As SumWeight FROM " + _
  quot;Advertisement WHERE Status=1"
 rs.Open strSql, cn
 If not rs.EOF and not rs.BOF Then
  TotalWeight = rs.Fields( " umWeight" )
  ' nTotalWeight有可能为空值
  If I ull( nTotalWeight ) Then
  TotalWeight = 1
  End If
 End If
   在计算出nTotalWeight之后,我们可以根据该值生成一个随机数,如下所示:

 Randomize
 nRandomNumber = Int( Rnd * nTotalWeight ) + 1
   程序将从数据库读取可用广告记录(参见下面的代码),累计已读取记录的weight总和,当这个新的总和超过这里生成的随机数时,就将当前记录作为本次显示的广告。

   ㈡ 分析可用广告记录

   接下来的任务是执行一个查询,提取所有可用广告记录。如前所述,在遍历这些可用广告记录时,记录已读取记录的weight值总和nWeightCount ,当nWeightCount 等于或大于前面生成的随机数nRandomNumber时,程序就认为找到了本次要显示的广告。具体如下:

 strSql = " ELECT * FROM Advertisement WHERE Status=1"
 rs.Close
 rs.Open strSql, cn
 bDone = false
 ' 已读取记录的Weight值总和
 nWeightCount = 0
 
 ' 清除变量
 strImageURL = " quot;
 strAltText = " quot;
 strLink = " quot;
 nImageWidth = 0
 nImageHeight = 0
 nWeight = 0
 nAdID = 0
 nAdvertiserID = 0
 nViewLimit = 0
 nImpre io  = 0
  
 While not rs.EOF and not rs.BOF and not bDone
  ' 将数据库值赋给变量
  ' 这种算法不利于效率,但简化了控制结构
  trImageURL = rs.Fields( "ImageURL" )
  trAltText = rs.Fields( "AltText" )
  trLink = rs.Fields( "Link" )
  ImageWidth = rs.Fields( "ImageWidth" )
  ImageHeight = rs.Fields( "ImageHeight" )
  Weight = rs.Fields( "Weight" )
  AdID = rs.Fields( "AdID" )
  AdvertiserID = rs.Fields( "AdvertiserID" )
  ViewLimit = rs.Fields( "ViewLimit" )
  Impre io  = rs.Fields( "Impre io quot; )
  WeightCount = nWeightCount + nWeight
  rs.MoveNext
  ' nWeightCount是否等于或大于随机变量值
  If nWeightCount >= nRandomNumber or rs.EOF Then
  Done= true
  End If
 Wend
   ㈢ 更新当前广告的显示次数

   在确定本次要显示的广告之后,程序就可以更新该广告记录的Impre io 字段。如果新的Impre io 值超过了显示次数限制(nViewLimit),还必需设置Status字段为0(即本广告不可再显示)。实现代码如下:

  tatus = 1
 nImpre io  = nImpre io  + 1
 If nImpre io gt;= nViewLimit Then
  tatus = 0
 End If
 strSql = "UPDATE Advertisement Set Status=" + _
 CStr(  tatus ) + ", Impre io =" + _
 CStr( nImpre io  ) + " WHERE AdID=" + _
 CStr( nAdID )
 rs.Close
 rs.Open strSql, cn
   ㈣ 生成HTML代码

   在完成上述准备工作之后,接下来就可以输出显示广告的HTML代码。所输出的HTML代码可以分成如下几个部分:

 重定向页面 --> 目标URL --> 其他参数 --> 图片标记
   为什么不是直接链接到广告客户指定的URL呢?这是因此,虽然这种方法更简单,但我们希望能够记录广告的点击数量,在重定向页面中我们就可以更新该广告的ClickThroughs字段值。

   在显示广告的HTML代码中,重定向页面本文假定为Redirect.a ,目标URL来自数据库,其他参数主要是广告编号、广告客户编号等,Redirect.a 利用这些参数记录点击历史纪录。具体实现如下:

 strHtmlCode = _
  quot lt;a href=Redirect.a ?" + _
  quot;Link=" + strLink + _
  quot am AdvertisementID=" + CStr( nAdID ) + _
  quot am AdvertiserID=" + CStr( nAdvertiserID ) + Chr( 34 ) + _
  quot; target=newFrame> lt quot; + Chr( 13 ) + Chr( 10 ) + _
  quot gt lt;/A> quot; + Chr( 13 ) + Chr( 10 )
   这里的strHtmlCode即为显示广告的HTML代码。

   ㈤ 记录其他信息

   为了给广告客户提供更多的信息,同时也为了便于进一步分析,除了记录显示次数之外,程序还在数据库表中记录其他一些信息(浏览本次广告时,浏览者所在的IP地址以及浏览时间、广告编号、广告客户编号),如下所示:

 strSql = "I ERT INTO Ba erHistory " + _
  quot;(AdvertiserID, AdID, IPAddre , Type) Values (" + _
  CStr( nAdvertiserID ) + ", " + _
  CStr( nAdID ) + ", '" + _
  Request.ServerVariables( "REMOTE_HOST" ) + _
  quot;', 1)"
 rs.Open strSql, cn
   浏览的日期时间值在Acce 数据库内设置,即设置字段默认值为Now()。

   ㈥ 重定向页面

   本文提供一个简单的重定向页面Redirect.a ,其功能是记录广告点击数量,然后生成历史表Ba erHistory中的记录,最后重定向到目标URL,如下所示:

 ' 连接数据库,创建记录集对象rs,略...
 
 ' 增加广告的点击计数,如点击计数超过限制值,
 ' 则设置Status为0
 strSql = "UPDATE Advertisement " + _
  quot et ClickThroughs=ClickThroughs+1, " + _
  quot tatus=iif(ClickThrough gt;=ClicksLimit,0,1) " + _
  " WHERE AdID=" + Request.QueryString( "AdvertisementID" )
 rs.Open strSql, cn
 
 ' 生成广告点击历史纪录
 strSql = "I ERT INTO Ba erHistory " + _
  quot;(AdvertiserID, AdID, IPAddre , Type) Values (" + _
  Request.QueryString( "AdvertiserID" ) + ", " + _
  Request.QueryString( "AdvertisementID" ) + ", '" + _
  Request.ServerVariables( "REMOTE_HOST" ) + "', 2)"
 rs.Open strSql, cn
 ' 重定向到广告客户指定的页面
 Re o e.Redirect( Request.QueryString( "Link" ) )
 Next Ste 



 

娱乐图摘

更多 >>

靓丽清纯美女meimei

美女私房全裸照
导演劝女演员脱衣服(视频)

大胆火辣人体艺术写真(图)

黑丝妹妹热辣诱惑-丝袜美女妹妹

PLMM 漂亮妹妹图集-妹妹图库

全球美女图库-美女集中营

52MM 我爱漂亮妹妹-制服妹妹诱惑

图王图库-世界美女明星图片资料库
美女写真集锦

激情两性-解密性生活
浴室MM湿身内衣诱惑
邻家小妹洗澡被偷拍(视频)

热点文章

更多

· XMLHTTP+Javascript+Asp写得聊天室,无刷
· 让您的主页支持各种浏览设备(ASP+篇)(下)_ASP实例_
· 将你的网站设置为客户的信任站点--WSH方案_ASP实例_s
· W3 Jmail中文使用说明_ASP实例_src119.co
· 利用XSL和ASP在线编辑XML文档_ASP实例_src11
· 一种在线人数统计方法(只用1个APPLICATION)_AS
· aspemail组件的应用_ASP实例_src119.com
· ASP连接执行程序 _ASP实例_src119.c
· 嵌入式Web视频点播系统实现方法_ASP实例_src119.
· 利用ASP实现三个强大功能之三_ASP实例_src119.c

热点文章

更多