요일별 방문자수 구하기
작업 중인 쇼핑몰 통계부분에서 요일별 방문자수를 구해야할 일이 생겼다. MySQL에 DATE_FORMAT 을 이용하면
나름 쉽게 처리할 수 있을 것 같아 간단하게 코드를 작성해봤다. 생각대로 원하는 결과가 나와서 아주 만족했다는..
위 이미지처럼 그래프까지 표시를 해야하는데.. 이렇게 표시하는 건 어려운게 아닌데 그래프가 위로 솟아오르는 것과
같은 애니메이션을 요구해서 결국은 jQuery의 animate() 까지 이용을 하게 됐다. 기본 작동원리는 각 요일의 방문자
총합을 구하고 그것을 배열에 저장한 후 방문자수 최대값을 구하고 이것을 기준으로 그래프 y의 최대 값을 구한 후
y 축에 값을 표시하고 그래프의 높이는 최대값일 때의 높이를 기준으로 각 비율을 계산해서 jQuery를 이용해 그래프가
그려지는 것이다. 원리는 간단한데.. 기본 실력이 없다보니 뭘하나 구현하는게 사실 쉽지가 않다. 한 2시간은 고민..
$sql_search = ” where (1) “;
if($fr_date && $to_date) {
if($to_date > $fr_date) {
$sql_search .= ” and vi_date between ‘$fr_date’ and ‘$to_date’ “;
}
} else {
$today = date(“w”, $g4[server_time]);
$td = 6 – $today;
$fr_date = date(“Y-m-d”, strtotime(“-{$today} days”));
$to_date = date(“Y-m-d”, strtotime(“+{$td} days”));
$sql_search .= ” and vi_date between ‘$fr_date’ and ‘$to_date’ “;
}
// 요일별 방문자수
$vi_count = array();
for($i = 0; $i <=6; $i++) {
$sql = ” select count(vi_id) as cnt
$sql_common
$sql_search
and DATE_FORMAT(vi_date, ‘%w’) = ‘$i’ “;
$row = sql_fetch($sql);
array_push($vi_count, $row[cnt]);
}
$max_visit = max($vi_count);
// y 최대값
if($max_visit > 10) {
if($max_visit % 10 == 0) {
$y_max = $max_visit;
} else {
$y_max = ceil($max_visit / 10) * 10;
}
} else {
$y_max = 10;
}
$y_1 = $y_max * 0.2;
$y_2 = $y_max * 0.4;
$y_3 = $y_max * 0.6;
$y_4 = $y_max * 0.8;
// 그래프 최대 높이
$max_height = 224;
MySQL의 DATE_FORMAT(‘%w’)는 각 요일을 숫자로 반환하는데 일요일 0 이고 토요일이 6이다. <참고사이트>
$(function() {
<?php
for($k = 0; $k < count($vi_count); $k++) {
$h = ceil(($max_height * $vi_count[$k]) / $y_max) – 1;
if($h > $max_height) {
$h = $max_height;
}
?>
$(‘div#day<?php echo $k; ?>’).animate({ height: “<?php echo $h; ?>px” }, 1000);
<?php
}
?>
});
</script>
위 코드는 jQuery에서 그래프가 실제로 위로 솟아오르게 처리하는 부분이다. 그래프 부분은 html 코드를 작성해서 처리해야 한다.
소스 좀 올려주시면 안될까요?
html 소스가 있어야 작동이 되네요.. ^^;