요일별 방문자 관련 문의 채택완료
웹메이킹
3년 전
조회 2,341
안녕하세요~
그누5를 배우는 초보자입니다.
관리자 페이지 메인에 요일별 방문자 집계 (최근 4주) 그래프를 만들려고 하는데요
즉 이번주, 저번주, 2주전, 3주전 이런식으로 하려고 합니다.
요일과 그래프는 정상적으로 출력은 잘 되고 있습니다.
(데이터 부분에 임의 수치를 넣었을때 그래프는 정상출력 됩니다)
문제는 요일별 방문자 데이터가 출력이 되지 않고 있습니다.
사용된 소스코드는 아래와 같습니다.
</p>
<p>// sql 쿼리</p>
<p><?php</p>
<p>$today = time();</p>
<p>$week = date("w");</p>
<p> </p>
<p>$week_first = $today-($week*86400);</p>
<p>$week_last = $week_first+(6*86400);</p>
<p> </p>
<p>$fr_date = date("Y-m-d",$week_first-(86400*30))." and ".date("Y-m-d",$week_last-(86400*30));</p>
<p>$to_date = date("Y-m-d",$week_first)." and ".date("Y-m-d",$week_last);</p>
<p> </p>
<p>$weekday = array ('월', '화', '수', '목', '금', '토', '일');</p>
<p> </p>
<p>$sum_count = 0;</p>
<p>$arr = array();</p>
<p> </p>
<p>$sql = " select WEEKDAY(vs_date) as weekday_date, SUM(vs_count) as cnt</p>
<p> from {$g5['visit_sum_table']}</p>
<p> where vs_date between '{$fr_date}' and '{$to_date}'</p>
<p> group by vs_date, weekday_date</p>
<p> order by vs_date, weekday_date "; </p>
<p> </p>
<p>$result = sql_query($sql);</p>
<p>for ($i=0; $row=sql_fetch_array($result); $i++) {</p>
<p> $arr[$row['vs_date']][$row['weekday_date']] = $row['cnt'];</p>
<p> </p>
<p> $sum_count += $row['cnt'];</p>
<p>}</p>
<p>?></p>
<p>
출력부분
</p>
<p> <div class="graph_wrap"></p>
<p> </p>
<p> <div id="visitor_graph_day"></div></p>
<p> </p>
<p> <script></p>
<p> var eg2 = new Easygraphs({</p>
<p> container: document.getElementById('visitor_graph_day'),</p>
<p> width: 550,</p>
<p> height: 160,</p>
<p> padding: {</p>
<p> top: 30,</p>
<p> right: 30,</p>
<p> left: 65</p>
<p> },</p>
<p> tooltip: {</p>
<p> template: '{{ category }}: {{ value }}',</p>
<p> widthAuto: true,</p>
<p> color: '#222',</p>
<p> background: '#FFF'</p>
<p> },</p>
<p> yAxis: {</p>
<p> text: {</p>
<p> toFixed: 0</p>
<p> },</p>
<p> title: {</p>
<p> text: '방문자수'</p>
<p> },</p>
<p> grid: {</p>
<p> show: false</p>
<p> }</p>
<p> },</p>
<p> xAxis: {</p>
<p> </p>
<p> labels: [</p>
<p> <?php</p>
<p> $k = 0;</p>
<p> if ($i) {</p>
<p> for ($i=0; $i<7; $i++) {</p>
<p> $count = isset($arr[$i]) ? (int) $arr[$i] : 0;</p>
<p> </p>
<p> $rate = ($count / $sum_count * 100);</p>
<p> $s_rate = number_format($rate, 1);</p>
<p> ?>'<?php echo $weekday[$i]?> (<?php echo $s_rate ?>%)',</p>
<p> <?php } } ?></p>
<p> ]</p>
<p> </p>
<p> },</p>
<p> data: [</p>
<p> {</p>
<p> name: '이번주',</p>
<p> dots: {</p>
<p> color: 'rgb(3, 169, 245)'</p>
<p> },</p>
<p> line: {</p>
<p> width: 1,</p>
<p> color: 'rgb(3, 169, 245)'</p>
<p> },</p>
<p> values: [</p>
<p> <?php</p>
<p> $k = 0;</p>
<p> if ($i) {</p>
<p> for ($i=0; $i<7; $i++) {</p>
<p> $count = isset($arr[$date][$i]) ? (int) $arr[$date][$i] : 0;</p>
<p> </p>
<p> $rate = ($count / $sum_count * 100);</p>
<p> $s_rate = number_format($rate, 1);</p>
<p> </p>
<p> $bg = 'bg'.($i%2);</p>
<p> ?><?php echo $count?>,</p>
<p> <?php } } ?></p>
<p> ]</p>
<p> },</p>
<p> {</p>
<p> name: '저번주',</p>
<p> dots: {</p>
<p> color: 'rgb(255, 140, 4)'</p>
<p> },</p>
<p> line: {</p>
<p> width: 1,</p>
<p> color: 'rgb(255, 140, 4)'</p>
<p> },</p>
<p> values: [ //데이터 들어가는 부분</p>
<p> </p>
<p> ]</p>
<p> },</p>
<p> {</p>
<p> name: '2주전',</p>
<p> dots: {</p>
<p> color: 'rgb(97, 108, 119)'</p>
<p> },</p>
<p> line: {</p>
<p> width: 1,</p>
<p> color: 'rgb(97, 108, 119)'</p>
<p> },</p>
<p> values: [ //데이터 들어가는 부분</p>
<p> </p>
<p> ]</p>
<p> },</p>
<p> {</p>
<p> name: '3주전',</p>
<p> dots: {</p>
<p> color: 'rgb(156, 177, 196)'</p>
<p> },</p>
<p> line: {</p>
<p> width: 1,</p>
<p> color: 'rgb(156, 177, 196)'</p>
<p> },</p>
<p> values: [ //데이터 들어가는 부분</p>
<p> </p>
<p> ]</p>
<p> }</p>
<p> </p>
<p> ]</p>
<p> });</p>
<p> eg2.render();</p>
<p> </script></p>
<p> </p>
<p> </div></p>
<p> </p>
<p></div></p>
<p>
지난번에 여러 고수님들이 조언해주신 대로 쿼리문 부터 date 함수를 참고해서 수정하고 테스트 해보고 있는데 진전이 없어 이렇게 문의 드립니다.
고수님들의 조언 부탁 드리겠습니다.
오늘도 좋은 하루 되세요^^
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
3년 전
날짜별로 저장해서 불러오면 됩니다.
</p>
<p>$today = time();</p>
<p>$week = date("w");</p>
<p> </p>
<p>$week_first = $today-($week*86400);</p>
<p> </p>
<p>$fr_date = date("Y-m-d",$week_first-(86400*21));</p>
<p>$to_date = date("Y-m-d",$today);</p>
<p> </p>
<p>$weekday = array ('일', '월', '화', '수', '목', '금', '토');</p>
<p> </p>
<p>$sum_count = 0;</p>
<p>$arr = $week_arr = array();</p>
<p> </p>
<p>$sql = " select *</p>
<p> from {$g5['visit_sum_table']}</p>
<p> where vs_date between '{$fr_date}' and '{$to_date}'</p>
<p> group by vs_date</p>
<p> order by vs_date "; </p>
<p> </p>
<p>$result = sql_query($sql);</p>
<p>for ($i=0; $row=sql_fetch_array($result); $i++) {</p>
<p> $arr[$row['vs_date']] = $row['vs_count'];</p>
<p> $week_arr[date("w",strtotime($row['vs_date']))] += $row['vs_count'];</p>
<p> </p>
<p> $sum_count += $row['vs_count'];</p>
<p>}</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
�
웹메이킹
3년 전
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
너무 감사합니다. 한가지 더 배웠습니다.
즐거운 하루되세요