%
'데이터베이스(connection객체)의 인스턴스 생성
Set objDB = Server.CreateObject("ADODB.Connection")
'데이터베이스 열기
objDB.open("dsn=my_database_dsn;uid=my_database_id;pwd=my_database_pwd;")
'코드값 변수에 할당
code=Request("code")
'넘겨온 코드값이 없으면 기본으로 ASP 저장
If code="" then
code="asp"
end If
'IP변수에 IP주소 할당
ip=Request("REMOTE_ADDR")
'보여줄 페이지의 모양(월별, 요일별, 시간별)을 결정할 값을 할당
vMode=Trim(CStr(Request.QueryString("vMode")))
vYear=Trim(CStr(Request.QueryString("vYear")))
vMonth=Trim(CStr(Request.QueryString("vMonth")))
vDay=Trim(CStr(Request.QueryString("vDay")))
'모드값이 없을 경우 날짜별 접속통계를 보여준다.
If vMode="" then vMode="month-day"
nYear=Trim(CStr(year(date))) '연도저장
nMonth=Trim(CStr(month(date))) '월 저장
'데이터베이스에 저장된 연도와 월 값이 현재 연도, 월과 같을 경우, 월 값이 비어 있을 경우 실행
'이전 달의 정보가 있는가를 확인하는 부분.
If (vYear=nYear and vMonth=nMonth) or vMonth="" then
oldview="0" '변수에 0 할당
vYear=nYear '접속년도 할당
vMonth=nMonth '접속 월 할당
else
oldview="1" '이전 달의 정보가 존재할 경우
end If
'접속 일의 값이 없을 경우 일을 저장
If vDay = "" then vDay = Trim(CStr(day(date)))
vDate=Trim(CStr(date())) '날짜 저장
vTime=Trim(CStr(hour(time))) '시간 저장
vWeek=Trim(CStr(weekday(date))) '요일 저장
'데이터베이스에서 number의 최소값에 있는 code 값을 불러온다.
sqlna="SELECT Min(number) FROM my_statistic WHERE code='"&code&"' "
Set lsna=objDB.Execute(sqlna)
snum=clng(lsna(0))
lsna.close
Set lsna=Nothing
'데이터베이스에서 전체 접속 수 필드의 code 값과 number 값을 불러온다.
sqlnav="SELECT avisit FROM my_statistic WHERE code='"&code&"' and number="&snum&" "
Set lsnav=objDB.Execute(sqlnav)
nav=lsnav("avisit") 'nav변수에 데이터베이스의 전체 접속 수를 할당
lsnav.close
Set lsnav=Nothing
'배열의 크기 지정
Dim tdvisit(31),ttvisit(24),wvisit(7),mvisit(12)
'데이터베이스 각각의 접속 수 필드에서 최대 값을 가지는code, 연도, 월 값을 불러온다.
sqlmd="SELECT Max(dvisit),Max(mvisit),Max(vday),Max(wvisit) FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&vMonth&"' "
Set lsmd=objDB.Execute(sqlmd)
mday=clng(lsmd(0)) '일
mvweek=clng(lsmd(3)) '요일
mmonth=clng(lsmd(1)) '월
lday=clng(lsmd(2)) '방문객이 접속한 날짜.
lsmd.close
Set lsmd=nothing
'이전 달의 정보 보기를 선택했다면 변수에 31을 할당
If oldview="1" and Request("vDay")="" then
vDay=31
end If
tday=clng(vDay)
midday=mmonth/tday 'tday 값을 mmonth 값으로 나눈 값을 midday에 할당
midday=formatnumber(midday,0,-1) '월 평균 접속 값을 지정
'1일부터 현재일까지 실행
For i=1 to clng(vDay)
iday=CStr(i)
sqlm1="SELECT Max(dvisit) FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&vMonth&"' and vday='"&iday&"' "
Set lsm1=objDB.Execute(sqlm1)
'첫번째 레코드의 값이 없을 경우 tdvist의 배열 값에 0을 할당
If lsm1(0)="" then
tdvisit(i)=0
else
tdvisit(i)=lsm1(0)
end If
lsm1.close
Next
'1월 부터 12월까지 반복
For m=1 to 12
m_Month=CStr(m)
'월 접속 수의 최대 값을 가지는 레코드의 code, vYear, vMonth 값을 읽어온다.
sqlm2="SELECT Max(mvisit) FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&m_Month&"'"
Set rsMonth=objDB.Execute(sqlm2)
'월 접속 수가 없을 경우 값에 0을 할당한다.
If rsMonth(0)="" then
mvisit(m)=0
else
mvisit(m)=rsMonth(0)
end If
rsMonth.close
Next
'일요일(1)에서 토요일(7)까지 반복
For k=1 to 7
'요일별로 접속 수를 가지는 레코드의 code, vYear, vMonth, vWeek의 값을 읽어온다.
sqlw0="SELECT wvisit FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&vMonth&"' and vweek='"&k&"' "
Set lsw0=objDB.Execute(sqlw0)
'읽어온 값이 없을 경우 접속 수에 0을 할당
If lsw0.eof then
wvisit(k)=0
else '읽어온 값이 있을 경우 요일별 접속 수의 최대 값을 가지는 레코드의 code, vYear, vMonth, vWeek 값을 검색
sqlw1="SELECT Max(wvisit) FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&vMonth&"' and vweek='"&k&"' "
Set lsw1=objDB.Execute(sqlw1)
wvisit(k)=lsw1(0) '검색한 값을 요일별 접속 수에 할당.
end If
lsw0.close
Next
'변수 초기화. 시간대별 접속 수의 합을 가지는 레코드의 code, vYear, vMonth, vDay의 값을 읽어온다.
mtime=0
sqltd = "SELECT sum(tvisit) FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&vMonth&"' and vday='"&vDay&"'"
set lstd = objDB.Execute(sqltd)
'읽어온 값이 없을 경우 일별 접속 수의 값을 0으로 할당한다.
If lstd(0) = "" then
total_day = 0
else
total_day = lstd(0) '일별 접속수에 할당
end If
'0시부터 23시까지 반복
For j=0 to 23
'vMode값이 day-time일 경우 실행
'시간별 접속수의 합을 가지는 레코드의 값들을 읽어온다.
If vMode = "day-time" then
sqlvd="SELECT sum(tvisit) FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&vMonth&"' and vday='"&vDay&"' and vtime='"&j&"'"
else 'vDay값을 제외하고 검색
sqlvd="SELECT sum(tvisit) FROM my_statistic WHERE code='"&code&"' and vyear='"&vYear&"' and vmonth='"&vMonth&"' and vtime='"&j&"'"
end If
lsvd=objDB.Execute(sqlvd)
If lsvd(0)="" then '시간별 접속 수가 없을 경우 0 할당
ttvisit(j)=0
else
ttvisit(j)=lsvd(0) '시간별 접속수가 있을 경우 검색한 값을 시간별 접속 수에 할당
end If
'시간대별 접속 수로 할당받은 접속 수가 현재 시간대별 접속 수보다 크면 읽어온 값을 할당.
If mtime < ttvisit(j) then
mtime=ttvisit(j)
end If
Next
'연도별 접속 수의 최소 값을 가지는 레코드와 Number의 최소 값을 가지는 레코드의 code 값을 읽어온다.
SQLstm = "SELECT Min(vyear),Min(Number) FROM my_statistic where code='"&code&"' "
Set lsstm=objDB.Execute(SQLstm)
syear=Trim(CStr(lsstm(0)))
snumber=clng(lsstm(1))
lsstm.close
Set lsstm=Nothing
'월별 접속 수를 가지는 레코드의 code 값과 number 값을 읽어온다.
SQLstm2 = "SELECT vmonth FROM my_statistic where code='"&code&"' and number="&snumber&" "
Set lsstm2=objDB.Execute(SQLstm2)
smonth=clng(lsstm2("vmonth"))
lsstm2.close
Set lsstm2=nothing
objDB.Close
Set objDB=nothing
%>
ASP 접속통계
ASP 접속 통계
<%
'vMode의 값이 month-day일 경우 실행-------------------------------------------------------------------------------
If vMode="month-day" then
%>
|
월통계 :
|
<% for m=1 to 12%>
<% if mvisit(m)>0 then %>
<%=m%>
월
|
<% else %>
<%=m%>
월
<%
End If
next
%>
|
접속수 :
|
<% for m=1 to 12%>
<%=mvisit(m)%>
|
<% next %>
|
|
|
Date
|
[
<%=vYear%>
년
<%=vMonth%>
월 날짜별 접속현황 ]
|
<%
'1일에서 오늘 날짜까지 반복. 날짜별 접속 수의 값에 따라 이미지의 길이 할당
For i=1 to tDay
iwidth=tdvisit(i)*10/mday
%>
|
|
<%=i%>
일
|
<%=tdvisit(i)%>
|
<% next
'오늘 날짜까지 반복했다면 종료하고 내일날짜부터 31일까지 반복
for i=tDay+1 to 31
%>
|
|
<%=i%>
일
|
|
<% next%>
|
|
합 계
|
<%=mmonth%>
|
|
<%
'vMode가 day-time일 경우 실행
elseif vMode="day-time" then
%>
|
|
Hour
|
[
<%=vYear%>
년
<%=vMonth%>
월
<%=vDay%>
일 시간별 접속현황 ]
|
<%
'0시에서 23시까지 반복하고 접속 수의 크기에따라 이미지 크기 변수에 할당
for w=0 to 23
twidth=ttvisit(w)*10/mtime
%>
|
|
<%=w%>
시
|
<%=ttvisit(w)%>
|
<% next%>
|
|
합 계
|
<%=total_day%>
|
|
<%
'vMode가 시간 누적일 경우 실행
elseif vMode="sum-time" then
%>
|
|
Hour
|
[
<%=vYear%>
년
<%=vMonth%>
월 시간별 누적통계 ]
|
<%
for w=0 to 23
twidth=ttvisit(w)*10/mtime
%>
|
|
<%=w%>
시
|
<%=ttvisit(w)%>
|
<% next%>
|
|
합 계
|
<%=Mmonth%>
|
|
<% elseif vMode="sum-day" then%>
|
|
Day
|
[
<%=vYear%>
년
<%=vMonth%>
월 요일별 누적통계 ]
|
<%
'일요일부터 토요일까지 반복
for w=1 to 7
select case w
case 1
wname="일"
case 2
wname="월"
case 3
wname="화"
case 4
wname="수"
case 5
wname="목"
case 6
wname="금"
case 7
wname="토"
end select
'요일별 접속수에 따라 이미지 변수의 크기에 따라 이미지를 출력한다.
iwidth=wvisit(w)*10/mvweek
iwidth=formatnumber(iwidth,0,-1)
%>
|
|
<%=wname%>
|
<%=wvisit(w)%>
|
<% next%>
|
|
합 계
|
<%=mmonth%>
|
|
<% End If %>