通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>asp专区>>正文 新版上线![旧版]
注:打开慢时请稍等

一个基于ASP的标题广告管理系统(三)

http://www.iyit.net  日期:2006-6-7 10:47:06  来源:不详  点击:
参加讨论】   三、显示广告

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

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

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

   ㈠ 计算显示等级总和

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

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

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

   ㈡ 分析可用广告记录

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

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

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

 nStatus = 1
 nImpressions = nImpressions + 1
 If nImpressions  >= nViewLimit Then
     nStatus = 0
 End If
 strSql = "UPDATE Advertisement Set Status=" + _
 CStr( nStatus ) + ", Impressions=" + _
 CStr( nImpressions ) + " WHERE AdID=" + _
 CStr( nAdID )
 rs.Close
 rs.Open strSql, cn
   ㈣ 生成HTML代码

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

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

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

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

   ㈤ 记录其他信息

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

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

   ㈥ 重定向页面

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

 ' 连接数据库,创建记录集对象rs,略...
 
 ' 增加广告的点击计数,如点击计数超过限制值,
 ' 则设置Status为0
 strSql = "UPDATE Advertisement " + _
     "Set ClickThroughs=ClickThroughs+1, " + _
     "status=iif(ClickThroughs>=ClicksLimit,0,1) " + _
     " WHERE AdID=" + Request.QueryString( "AdvertisementID" )
 rs.Open strSql, cn
 
 ' 生成广告点击历史纪录
 strSql = "INSERT INTO BannerHistory " + _
     "(AdvertiserID, AdID, IPAddress, Type) Values (" + _
     Request.QueryString( "AdvertiserID" ) + ", " + _
     Request.QueryString( "AdvertisementID" ) + ", '" + _
     Request.ServerVariables( "REMOTE_HOST" ) + "', 2)"
 rs.Open strSql, cn
 ' 重定向到广告客户指定的页面
 Response.Redirect( Request.QueryString( "Link" ) )
 Next Steps

 

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:对数据库中的记录用上一条下一条显示(一)
下一篇:一个基于ASP的标题广告管理系统(二)
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
PHP VS ASP PHP比ASP优秀的七个理由 用php实现广告轮播
php的header和asp中的redirect比较 php和asp对象的等价关系 发挥语言的威力--融合PHP与ASP
利用PHP实现与ASP Banner组件相似的类 php和asp对象的等价关系 随机广告显示(PHP函数)
用PHP实现小型站点广告管理 PHP的ASP防火墙 一个广告轮播系统的例子(内含文件上传
ASP初学者常犯的几个错误 [ASP]利用 xmlhttp 分块上传文件 asp,php 和 jsp 比较 之我见
刷一次变一次图的ASP代码 ASP基础 一段在asp中加密与解密对应的函数
ASP自动解压RAR文件 在ASP与ASP.NET之间共享对话状态(2) 在ASP与ASP.NET之间共享对话状态(1)
利用ASP+JMAIL进行邮件群发的新思路 ASP操作Excel技术总结 用ASP实现对ORACLE数据库的操作
最新更新 热点排行 推荐新闻
ASP初学者常犯的几个错误
rs.open sql,conn,1,1全接触
处理较长文章,添加 …… 效果
[ASP]利用 xmlhttp 分块上传文件
asp,php 和 jsp 比较 之我见
ncsc
重庆大学生引资百万建网站半年倒闭
PHP安装攻略:安装并配置PHP
PHP应用分页显示制作详细讲解
MySQL数据库基础教程
Php利用java解析xml
使用PHP实现动态网页
使用PHP和XSL stylesheets转换XML文档
在php中输出html代码
关于session的问题集锦解决方案
用ASP+XMLHTTP编写天气预报程序
ASP如何获取真实IP地址
VS .net 2003调试javascript中两个杂症
datagrid编辑、修改、删除、翻页例子
rs.open sql,conn,1,1全接触
QQ密码本地破解
msn8.0下载
珊蝴虫QQ探测隐身的招式用法
Visual Basic 概述
exeplorer.exe错误的问题的总结、解决
解决Windows中的explorer.exe出错
Authorware7.0基础与实例教程连载 第5
PPLive最新内部版本揭密
Windows常见文件修复技巧
一个好汉N个帮 Word实用插件集锦
ASP 五大高效提速技巧
ASP中使用SQL语句教程
测试一下喽!
Windows下的虚拟主机设置全功略
危险无处不在 Html标签带来的安全隐患
网络游戏是06年互联网最具发展潜力业务
巧用ACDSee 8.0截取QQ表情每一帧
解除瑞星 诺顿遗留下的杀毒兼容问题
第一款开源AJAX安全扫描工具Sprajax
WinRAR人性化功能揭密
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
Linux操作系统12则经典应用技巧
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息