시간별 접속자 집계 관련 문의
본문
그누보드5 ./adm/visit_hour.php 파일 입니다.
$g5['title'] = '시간별 접속자집계';
include_once('./visit.sub.php');
$colspan = 4;
$max = 0;
$sum_count = 0;
$fr_date = 2018-05-08; // 시작 년-월-일
$to_date = 2018-06-08; // 종료 년-월-일
$sql = " select SUBSTRING(vi_time,1,2) as vi_hour, count(vi_id) as cnt
from {$g5['visit_table']}
where vi_date between '{$fr_date}' and '{$to_date}'
group by vi_hour
order by vi_hour ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$arr[$row['vi_hour']] = $row['cnt'];
if ($row['cnt'] > $max) $max = $row['cnt'];
$sum_count += $row['cnt'];
}
?>
<div style="padding:20px; font-size:20px; font-weight:bold">Total : <?php echo $sum_count?></div>
<?php
$k = 0;
$j = 0;
if ($i) {
for ($i=0; $i<24; $i++) {
$hour = sprintf("%02d", $i);
$count = (int)$arr[$hour];
$rate = ($count / $sum_count * 100);
$s_rate[$j] = number_format($rate, 1);
$scount[$j] = $count;
$j++;
}
}
?>
현재 30일 기간 선택하면 평균 해당 시간대 방문자 값이 선택 되어 출력이 됨니다.
00시 : 120명 (00시에 30일 기간동안 방문자 누적 120명) (1 값)
01시 : 150명 (01시에 30일 기간동안 방문자 누적 150명) (2 값)
......
23시 : 174명 (23시에 30일 기간동안 방문자 누적 174명) (24 값)
이런식으로 기존출력 24개 값에서 누적되어 출력되는 이것을
00시 4명 (05/08일 4명) 1첫번째
..
..
..
23시 3명 (06/07일 3명) 720번째 (24시간 * 30일 = 720개 (30일) 기준)
기존: 출력값 24개
변경: 출력값이 720개
위 퀴리 부분은 하루 24시간 기준의 작성된 부분 인데 이걸 30일 출력을 할 수 있을까요?
필요한건 퀴리 어떡게 입력 해야 되는지 궁금 합니다.
!-->답변 1
$arr[$row['vi_date']][$row['vi_hour']] = $row['cnt'];
$sum_count[$row['vi_date']] += $row['cnt'];
로 수정해서 일자별 시간대별 데이터를 저장하고,
시간대별로 for 위에 일자별 for 문을 추가하면 됩니다.
for($d=strtotime($fr_date); $d<=strtotime($to_date); $d+=60*60*24) {
$date = date('Y-m-d',$d);
for ($i=0; $i<24; $i++) {
$hour = sprintf("%02d", $i);
$count = (int)$arr[$date][$hour];
$rate = ($count / $sum_count[$date] * 100);
$s_rate[$j] = number_format($rate, 1);
$scount[$j] = $count;
$j++;
}
}