테스트 사이트 - 개발 중인 베타 버전입니다

요일별 방문자 관련 문의 채택완료

웹메이킹 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 포인트
e
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년 전
eyekiss 님
너무 감사합니다. 한가지 더 배웠습니다.
즐거운 하루되세요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인