动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网页设计 → 阅读文章

 统计图片的点击率

作者来源: 
阅读 数 434 人次 , 2006-4-18 2:48:00 


  ∪绻愀乙谎约旱闹饕呈翘峁└髦滞计竦模敲粗滥男┩计芑队男┎皇芑队窍嗟庇斜匾摹T谡饫铮虼蠹医樯芤幌挛矣肁SP如何解决这个问题的。

  我们首先来分析一下。一般作为图片站点,首先显示出来的是一些小尺寸的缩略图,点击后才显示出大图。因此,我们可以在小图与大图之间的链接上做文章,让小图的链接指向一个ASP文件,由这个ASP文件将点击记录下来,然后再显示出大图,原理是相当简单的。

  首先,我们要建立一个用来记录点击的数据库文件,我用的是ACCESS97,其它的数据库也可以。在这个库中,只需要一个表,取名就叫1吧。数据库字段有三个:picturename(字符型),clicktimes(数字型),starttime(日期型),第一个是图片的名字,第二个是点击的总次数,第三个是第一次点击的时间。注意,字段名不能用汉字。

  建好库后,接下来是界面和程序的编制。在FrontPage2000中新建一个HTML文件,插入几张图片,并用缩略图功能把它缩成小图,保存。再新建一个ASP文件,它的源代码如下:

  $#@60;% Server.ScriptTimeOut = 60 //设置超时时间
   Response.Expires =0%$#@62; //设置网页的过期时间为0
  $#@60;!--#include file =″adovbs.inc″ --$#@62; //调入VB常量说明文件
  $#@60;%
  Dim picturename1,clicktimes1,starttime1 //申明用来保存数据的变量。
  Dim connection,record //申明用来打开数据库的变量。
  Picturename1= Request.QueryString(″picturename″)//取得图片的名字。
  Set connection = Server.CreateObject(″ADODB.Connection″)
   Set record= Server.CreateObject(″ADODB.Recordset″)
   Record.locktype=3 //设置record对象的锁定方式
   Record.cursortype=adopenforwardonly //设置游标的方向只能向前
   dsn =server.MapPath(″access.dsn″) //取得access.dsn在服务器的路径
  mdb=server.mappath(″click.mdb″)   //取得click.mdb的路径
  mydsn=″filedsn=″+dsn+″;dbq=″+mdb+″;″
  connection.Open mydsn
  //以上这些是打开数据库的操作。其中access.dsn是一个ACCESS数据库的配置文件。

  下面,我们要取得在数据库中图片名字对应的点击次数。首先在库中查找有没有这个名 ?
  sql=″SElect * from 1 where picturename=′″&picturename1&″′″ //构建SQL语句。
  Record.open sql, connection //执行SQL查询
  查询后,我们要判断一下库中有没有对应的记录。如果没有就要新建一个:
  if record.EOF=true then
  thistime=1
  currenttime=date
  Record.close() //关闭record这个对象,下面要重新以另一种方式打开
  sql=″insert into 1(picname,clicktimes,starttime) values(′″&picturename1&″′,′″&thistime&″′,′″&currenttime&″′)″ ′构建SQL插入语句
  set record=connection.Execute(sql)
  else
  totaltimes=cint(record(″clicktimes″)) //从数据库中取得以前存入的点击次数
  totaltimes=totaltimes+1 //加上这一次
  record(″clicktimes″)=totoletimes //重新赋值
  record.updata() //更新数据库中的记录
  endif
  %$#@62;

  以上,点击记录的工作就基本上完成了,千万别忘了,还要把图显示出来。这也很简单,只需在$#@60;body$#@62;与$#@60;/body$#@62;间加入一句 $#@60;img border =″0″ src=″$#@60;%=picturename1%$#@62; $#@62;就可以了。如果需要的话,还可以写上总的点击次数:$#@60;% Response.Write picturename1&″这幅图片总共被点击″&totaltimes&″次″ %$#@62;

  到此为止,ASP部分就完成了。在前一个HTML文件中还要作些小改动。把所有的
  $#@60;a href=″文件名″$#@62;$#@60;img border=″0″ src=″文件名_small.jpg″ alt=″文件名.jpg (48344 字节)″ width=″120″ height=″98″$#@62;$#@60;/a$#@62;

  通通都改成$#@60;a href=″jilu.asp?picturename=文件名$#@62;$#@60;img border=″0″ src=″文件名_small.jpg″ alt=″文件名.jpg (48344 字节)″ width=″120″ height=″98″$#@62;$#@60;/a$#@62;其中jilu.asp是刚才的那个ASP文件名。

  如果就记录点击情况而言,上面这些基本上就足够了。但是这样记录下的的结果需要下载下来才知道,这似乎有点太原始了。所以下面还要加入在线统计的功能。

  用来统计的程序,应该能够按升序或降序排列记录,显示每天的点击率,如果条目太多,还有必要加入翻页功能。

  查看统计只是让站长做的工作,所以设置一个密码是很有必要的。因此,新建一个HTML文件,插入一个表单:

  $#@60;form method=″POST″ action=″tongji.asp″$#@62;
  $#@60;p$#@62;$#@60;input type=″radio″ value=″升″ checked name=″R1″$#@62;升序排列
  $#@60;input type=″radio″ name=″R1″ value=″降″$#@62;降序排列$#@60;/p$#@62;
  $#@60;p$#@62;$#@60;input type=″text″ name=″T1″ size=″20″$#@62;$#@60;input type=″submit″ value=″提交″ name=″B1″$#@62;$#@60;input type=″reset″ value=″全部重写″ name=″B2″$#@62;$#@60;/p$#@62;
  $#@60;p$#@62; $#@60;/p$#@62;
  $#@60;/form$#@62;

  下面是tongji.asp的内容:
  $#@60;%
  if (request.From(T1)$#@60;$#@62;″1234″) then
  response.write ″你不能进入!!!″
  response.end
  end if
  Set connection = Server.CreateObject(″ADODB.Connection″)
  Set record= Server.CreateObject(″ADODB.Recordset″)
  Record.locktype=3  
  Record.cursortype=adopenforwardonly
  dsn =server.MapPath(″access.dsn″)
  mdb=server.mappath(″click.mdb″)   
  mydsn=″filedsn=″+dsn+″;dbq=″+mdb+″;″
  connection.Open mydsn
  if request.Form(R1)=″升″ then
   sql=″select * from 1 order by clicktimes″
  Else
   Sql= ″select * from 1 order by clicktimes DESC″
  End if
   Record.open sql,connection //执行SQL
  cuttenttime=date
  %$#@62;

  下面是显示的部分,这里用一个表格来分隔各种数据:
  $#@60;table border=″1″ width=″100%″$#@62;
  $#@60;%while record.eof =false
  if record(″clicktimes″)=0 then record.MoveNext %$#@62; //在数据库中有一些数据并不正常,要排除它们。
  $#@60;tr$#@62;
  $#@60;td width=″33%″$#@62;$#@60;%=record(″picname″)%$#@62;  $#@60;/td$#@62;
  $#@60;td width=″33%″$#@62;$#@60;%=record(″clicktimes″)%$#@62; $#@60;/td$#@62;
$#@60;td width=″34%″$#@62;$#@60;%=csng( record(″clicktimes″)/(datediff(″d″,record(″starttime″),currenttime,0,0)+1))%$#@62; $#@60;/td$#@62;
  $#@60;/tr$#@62;
  $#@60;%
  record.MoveNext //游标向下移
  wend%$#@62;  
  $#@60;/table$#@62;

  到这里,一个简单的图片点击记录、统计的ASP程序就完成了,希望大家在这个基础上添枝加叶.   
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Contribute——网站更新管理更轻松
· 下一篇:鼠标触发图片渐隐渐显效果HTC
· FrontPage10全透视教程(10)
· 如何实现iframe(嵌入式帧)的自适应高度
· HTML组件之:日历主页面
· Ulead SmartSaver Pro 3.0秘籍点点通(十八)
· JavaScript学习:删除数组元素


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077