6.7.1. global.asa 보기. 안녕하세요 !!! 오늘은 간단한 접속통계를 구현하는 방법에 대해서 몇자 적어 볼라고 들어왔답니다.. 오늘은 즐거운 토욜인데,,,,, 다덜 뭐하세요??? 저요?? ^^;; 전 조금 있다가,,, 광주 가요,,,,,, 앤 만나러,,, 룰루라,,, 룰루라,,, 부럽죠??? 모두덜 존 사람 만날수 있을겁니다.. 못생긴 지두 앤이 있는데,,,,,, ^^; 먼저 어케 하면 접속 통계를 구할 수 있을까???? 뭐,,, 여러분도 알고 있으리란 생각을 하구 간단하게 설명을 드릴께요.. 1. 먼저 손님이 접속하면???? 오늘의 연도와, 월, 시간,,, 등등을 디비에 저장하게 됩니다. 당근이죠??? 2. 그리구, 출력해 주면 되겠죠??? 3. 접속자가 빠져나간다.... 하하하~~~ 너무 쉬운가요??? 모든 프로그램을 너무 어렵게만 생각하지 마세요.. 저같이 가끔은 멍청하게 생각해야 프로그램이 잘 되는 경우도 있거덩요,,,,,, ^^;; 그럼, 1번의 경우,,, 어케 처리를 하면 될까요???? 접속을 했다???? 그럼,,, 당근 global.asp 의 Sub Session_OnStart가 실행이 되겠죠? 여기에서 디비에 연결하고 연도 월 시간 등등을,,,,, 저장하면 될겁니다.. 저 같은 경우는 IP주소 까징 저장이 된답니다. 그럼, 간단하게 global.asa 부분을 보도록 하지요,,, sub Session_OnStart 부분만 보도록 하겠습니다.... //-------------------------------------------------------------------------- Sub Session_OnStart Application.lock Set db = Server.CreateObject("ADODB.Connection") db.Open ("dsn=polcomm;uid=sa;pwd=;database=ankyu") SQL = "Select Max(num) from Statusbar" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open SQL, db If IsNULL(rs(0)) Then number = 1 else number = rs(0) + 1 End If aaa=day(now) if Len(aaa)=1 then aaa= "0"&aaa end if SQL = "INSERT INTO Statusbar (num,year1,month1,day1,time1,ip_addr) VALUES " SQL = SQL & "( "& number SQL = SQL & ",'" & year(now) & "'" SQL = SQL & ",'" & month(now) & "'" SQL = SQL & ",'" & aaa & "'" SQL = SQL & ",'" & hour(now) & "'" SQL = SQL & ",'" & Request.ServerVariables("REMOTE_HOST") & "')" db.Execute SQL rs.Close db.close Set rs = Nothing Set db = Nothing Application.unlock End Sub //-------------------------------------------------------------------------- 조금 길죠,,,,, 대충 설명을 드리자면요,,,, 저의 디비 이름은(ankyu) 랍니다... 연결이 됐죠? 그리구 num 필드에 번호를 추가해 줬답니다.... 그리구 오늘의 날짜 (day(now))를 뽑아왔어요,, 날짜가 1자리면 01,02,03,,, 이런식으로 출력하기 위해서 앞에 "0"을 더해 줬구요,,, 테이블 이름은 Statusbar 랍니다...... num : 번호 year1 : 년도 month1 : 월 day1 : 일 time1: 현재시간 ip_addr : 접속자 주소 이렇게 되어 있답니다.... 이렇게 저장만 하면,,, 되겠죠???? 문제는 출력을 시킬 때 어케 출력이 되어야 하는가??? 바로 우리는 여기를 고민해야 할 것입니다.... ^^;; 6.7.2. Statusbar.asp. 이제 사람들이 접속을 하면 디비에 접속자들의 정보가 쌓이게 되겠죠?? 차곡 차곡,,, 그럼, 이젠 Statusbar.asp를 보도록 하겠습니다.... 이 파일은 접속자 현황을 출력해 주는 파일이랍니다. 먼저 소스 입니다. //----------------------------------------------------------------- year1=request("year1") month2=request("month2") if year1="" then year1=year(now) end if if month2="" then month2=month(now) end if set db = Server.CreateObject("ADODB.Connection") db.Open ("dsn=polcomm;uid=sa;pwd=;database=ankyu) SQL = "SELECT day1,cnt=count(day1) FROM statusbar where year1='"& year1 &"' and month1='" & month2 & "' group by day1 order by day1" 'response.write sql Set rs = Server.CreateObject("ADODB.Recordset") rs.Open SQL,db,1 //----------------------------------------------------------------- 먼저 request("year1") , request("month2") 가 있습니다.... 이 값은 현재의 연도와 현재의 월을 받아 옵니다.... 그래서 디비와 비교를 해야겠지요?? 만약 값이 넘어오지 않았다면 현재의 년과 현재 월을 저장해야 됩니다..... 아래 줄에 있는 부분이 그 부분입니다... 그리구 출력을 해야겠지요?? 쿼리문을 보도록 하지요,,,, 현재 데이터 베이스에는 다음과 같은 형태로 저장이 되어 있을 겁니다. 번호 년 월 일 시간 IP --------------------------------------- 1 2000 7 01 03 210.181.135.202 2 2000 7 01 04 xxx.xxx.xxx.xxx : --------------------------------------- 어떤 쿼리를 써야 할까요,,,, 만약 7월에 대한 접속통계를 보고 싶다면 ?? SELECT * FROM statusbar where year1='2000' and month1='7' 이렇게 하면 7월에 대한 데이터 들을 출력할 수 있겠죠? 그러나, 우린 이런식으로 출력하기를 원하지 않습니다. 그럼 어떻게??? 7월 1일 500명 7월 2일 345명 : 이런식으로 출력해야겠지요?? 그럼,,,, group by 문을 쓰면 간단히 처리를 할 수 있답니다. SELECT day1,cnt=count(day1) FROM statusbar where year1='"& year1 &"' and month1='" & month2 & "' group by day1 order by day1 이렇게요,,, 간단한 설명을 드리자면,,,, statusbar에서 조건이 넘겨 받은 연도와 월이 있겠죠??? 현재 월에 해당하는 모든 사용자들을 출력하고 싶은 무엇을 기준으로??? 바로 날짜을 기준으로 접속통계(count)를 뽑아 보시려는 거죠??? 그러니 그룹은 day1 이 될겁니다.. 그럼 이번 달의 일자를 기준으로 쭈욱 뽑아올겁니다.... 이걸 count(day1) 함수만 집어 넣으면 ?? 카운터는 자동으로 붙게 되겠죠?? 어때요?? 간단하죠??? 그리구 출력을 시키면 되죠?? 아래처럼,,, //------------------------------------------------ mincnt=100000 maxcnt=0 do while NOT rs.eof day1=rs("day1") cnt=rs("cnt") if maxcnt < cnt then maxcnt=cnt maxday=day1 end if if mincnt > cnt then mincnt=cnt minday=day1 end if response.write day1 response.write cnt rs.movenext loop %> 최대 접속수 : <%=maxcnt%> 최소 접속수 : <%=mincnt%> 최대 접속수와 최소접속수를 계산하는 부분이랍니다...... 뭐,,, 이 정도는 설명을 안드려도 다 이해 하실 줄로 믿고 설명을 접도록 하겠습니다... 모두덜 존 하루 되시구요,,,, 마구 마구 응용해서 멋진 접속 통계를 만들어 보시길..... 바랍니다. 오늘도 존 하루 되세요.....
|
|||||||||||