再见西城 发表于 2015-1-16 22:28:18

MYSQL网页编程之Access为背景数据库的网站统计体系

由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。一个能对会见者举行编号、纪录会见次数、IP、工夫的统计制造实例
我以ACCESS库为例子,实在用SQLSERVER库也只需改一下链接库的语句就得啦,库布局以下
库文件名:CONT.ASP原本是CONT.MDB但在建好后把扩大名改成了ASP,以防库被下载。
表名:tab

字段名数据范例申明
ID主动编号访客的编号
IP文本用于纪录访客的IP
dat1日期工夫用于纪录访客最初会见的工夫
dat日期工夫用于纪录访客第一次会见的工夫
CS数字,整型用于纪录访客会见次数
程序很复杂,只要两个文件,dispcont.asp用于显现统计了局,contpage.asp用于统计信息,
先看看CONTPAGE.ASP是乍么统计的,代码以下:
<%
SetConn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("cont.asp")+";DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};"
Conn.Openconnstr‘’*****以上语句用于毗连库,cont.asp是库文件名。
keren=request.cookies("keren")‘’读取cookies,cookies的名为:“keren”,哈哈。。阿余的E文学的臭,只懂用拼音啦。
ifkeren=""then‘’判别cookees是否是空,假如是空,那末一定是新伴侣啦,不然是老伴侣。
sql="SELECT*FROMtabwhereid=-1"
setrs=server.createobject("ADODB.Recordset")
rs.Opensql,conn,1,3
rs.addnew‘’假如是新访客的话,在库中新增一笔记录。
rs("cs")=1‘’记下会见次数为1
rs("ip")=request.servervariables("remote_addr")‘’记下IP,
rs("dat")=now‘’记下以后的日期工夫,
rs("dat1")=date‘’记下以后的日期,今后用来做第一次会见的日期,
response.cookies("keren")=rs("id")‘’写进一个cookies,内容就和ID一样。
response.cookies("keren").expires=date+365‘’设置cookies的无效日期从如今入手下手,365天,
else‘’以上是新伴侣的处置举措,对老伴侣怎样办呢?看上面的:
sql="SELECT*FROMtabwhereid="&keren‘’到库中往找出我们老伴侣的纪录
setrs=server.createobject("ADODB.Recordset")
rs.Opensql,conn,1,3
rs("cs")=rs("cs")+1‘’好啦,找到啦,把会见次数加上1
rs("ip")=request.servervariables("remote_addr")‘’看看他的IP是几了,记上去。
rs("dat")=now‘’记下如今的工夫,也就是最初一次会见的工夫,
response.cookies("keren")=rs("id")‘’再把cookies写出来,我不知这句是不是过剩,没有试。
response.cookies("keren").expires=date+365‘’设置cookies过时工夫,以免一年到了我就不认得他了。
endif
rs.update‘’该记的都记下了,更新库吧。
rs.close‘’封闭recordset工具。
setconn=nothing‘’开释conn,我仍是以为connection要随开随关才对,放到SESSION中我以为最不成取。4
%>
好啦,纪录就做好啦,有二十几行代码,很复杂的一个小程序,程序写好了,怎样放到页面中呢?很复杂,在首页上任意找个中央,加上这行代码:<imgsrc="contpage.asp"width="0"height="0">就好了。
接上去就是把纪录显现出来。
文件名:dispcont.asp,请看代码:
<%
SetConn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("cont.asp")+";DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};"
Conn.Openconnstr‘’*****以上语句用于毗连库,cont.asp是库文件名。
page3=request("pag")
ifpage3=""thenpage3=session("contpag")‘’分页数,以后分页
ifpage3=""thenpage3="1"
pa=request("pa")
ifpa=""thenpa=session("contpa")‘’每页显现数
ifpa=""thenpa=15‘’默许每页显现15条,可恣意改
session("contpag")=page3
session("contpa")=pa
pages=pa‘’每页显现数目***************以上一段程序用于完成分页功效
SQL="SELECT*FROMtaborderby-dat,-id"
dimrs
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,1
csi=0
cs1=0
cs100=0
csdat1=0
dowhilenotrs.eof
csi=csi+rs("cs")
ifrs("cs")=1thencs1=cs1+1
ifrs("cs")>=100thencs100+1
ifdatevalue(rs("dat"))=datethen
csdat1=csdat1+1
endif
rs.movenext
loop
ZS=RS.RECORDCOUNT
‘’*****************************************************8以下一段程序用于分页显现
%>
<head>
<title>站长资讯在线统计</title>
</head>
<bodystyle="font-size:9pt"bgcolor="#D8EDF8">
共有<%Response.Writezs%>笔记录,如今是第<%Response.Writepage3%>页每页显现:[<ahref="dispcont.asp?pag=<%=page3%>&pa=15">15]条、[<ahref="dispcont.asp?pag=<%=page3%>&pa=20">20]条、[<ahref="dispcont.asp?pag=<%=page3%>&pa=30">30]条、[<ahref="dispcont.asp?pag=<%=page3%>&pa=40">40]条
[<ahref="dispcont.asp">革新]
<divalign="left">
<tableborder="0"cellpadding="0"style="font-size:9pt">
<tr><td>页码</td><%page2=1
fori=1tozssteppages
ifpage3=cstr(page2)then
%><td>[<%Response.Writepage2%>]</td>
<%else%>
<td><ahref="dispcont.asp?pag=<%Response.Writepage2%>">[<%Response.Writepage2%>]</td>
<%endif
page2=page2+1
next
sn=pages*(page3-1)‘’以后纪录号=每页显现数*页数-每页显现数
ifsn>zsthensn=0
rs.movesn,1
‘’**********************************以上一段用于分页
%></tr></table>
</div><tablestyle="font-size:9pt"width="100%"bordercolorlight="#000000"border="1"bordercolordark="#FFFFFF"bgcolor="#A4D1E8"cellspacing="0"cellpadding="3">
<tr><td>编号</td><td>最初会见首页</td><td>最初会见IP</td><td>首页次数</td><td>初次会见日期</td></tr><%
fori=1topages
Response.Write"</tr>"
Response.Write"<td>"&rs("ID")&"</td>"
Response.Write"<td>"&rs("dat")&"</td>"
Response.Write"<td>"&rs("IP")&"</td>"
Response.Write"<td>"&rs("CS")&"</td>"

Response.Write"<td>"&rs("DAT1")&"</td>"
Response.Write"</tr>"
rs.movenext
ifrs.eofthenexitfor
next
rs.close
%>
<tr><td>算计<%=zs%></td><td>会见次数为100次以上的有<%=cs100%></td><td>会见次数为1的有:<%=cs1%></td><td>总会见次数<%=csi%></td><td>明天会见量:<%=csdat1%></td></tr>
</table>
‘’****************************以上是完全的分页显现全体复制上去便可用。没有思索一笔记录也没有的情形。
这些过程被存储和运行在数据库服务器上,以减少在客户端的处理过程,从而最大限度地提高了处理能力,因为通常情况下数据库服务器会运行地更快。存储过程并不是MySQL独有的功能,但是这个最近新增加的功能使得这个数据库比以前更具吸引力了。

简单生活 发表于 2015-1-19 06:31:55

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的

活着的死人 发表于 2015-1-24 11:10:22

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

小女巫 发表于 2015-2-1 06:34:19

光写几个SQL实在叫无知。

老尸 发表于 2015-2-7 01:31:21

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。

再现理想 发表于 2015-2-19 09:48:47

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

admin 发表于 2015-3-6 14:52:27

连做梦都在想页面结构是怎么样的,绝非虚言

若相依 发表于 2015-3-13 02:09:30

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

愤怒的大鸟 发表于 2015-3-20 10:05:58

我个人认为就是孜孜不懈的学习
页: [1]
查看完整版本: MYSQL网页编程之Access为背景数据库的网站统计体系