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

차트관련 문의 도움부탁드립니다. 채택완료

웹메이킹 3년 전 조회 3,885

차트 구현방법은 여러 자료들을 토대로 작업을해서 출력은 잘 되었는데요

잘 안되는 부분이 있어 이렇게 문의드립니다.

 

사용한 소스는 아래와 같습니다.

</p>

<p><?php</p>

<p> </p>

<p>$max = 0;</p>

<p>$sum_count = 0;</p>

<p>$arr = array();</p>

<p> </p>

<p>$sql = " select * from {$g5['visit_table']}</p>

<p>          where vi_date between '$fr_date' and '$to_date' ";</p>

<p>$result = sql_query($sql);</p>

<p>while ($row=sql_fetch_array($result)) {</p>

<p>    $s = $row['vi_device'];</p>

<p>    if(!$s)</p>

<p>        $s = '기타';</p>

<p> </p>

<p>    if( isset($arr[$s]) ){</p>

<p>        $arr[$s]++;</p>

<p>    } else {</p>

<p>        $arr[$s] = 1;</p>

<p>    }</p>

<p> </p>

<p>    if ($arr[$s] > $max) $max = $arr[$s];</p>

<p> </p>

<p>    $sum_count++;</p>

<p>}</p>

<p>?></p>

<p><script></p>

<p>$(function(){</p>

<p>  $("#doughnutChart_device").drawDoughnutChart([</p>

<p>    <?php</p>

<p>    $i = 0;</p>

<p>    $k = 0;</p>

<p>    $save_count = -1;</p>

<p>    $tot_count = 0;</p>

<p>    if (count($arr)) {</p>

<p>        arsort($arr);</p>

<p>        foreach ($arr as $key=>$value) {</p>

<p>            $count = $arr[$key];</p>

<p>            if ($save_count != $count) {</p>

<p>                $i++;</p>

<p>                $no = $i;</p>

<p>                $save_count = $count;</p>

<p>            } else {</p>

<p>                $no = '';</p>

<p>            }</p>

<p>            if (!$key) {</p>

<p>                $key = '기타';</p>

<p>            }</p>

<p>            $rate = ($count / $sum_count * 100);</p>

<p>            $s_rate = number_format($rate, 1);</p>

<p>    ?>    </p>

<p>    { title:"<?php echo $key; ?>", value:<?php echo $count ?>, color:"#03a9f5" },</p>

<p>    <?php</p>

<p>        }</p>

<p>    }</p>

<p>    ?></p>

<p>  ]);</p>

<p>});</p>

<p></script></p>

<p>

 

질문1. { title:"", value:, color:"#03a9f5" },

위의 부분에서 $key 변수에 따라 color 값이 변경이 되어야 하는데 차트에서 동일하게 아래와 같이 color값이 표시가 됩니다.

{ title:"pc", value:4, color:"#03a9f5" },

{ title:"mobile", value:1, color:"#03a9f5" }, --> color:"#616c77" 이렇게 변경이 되야 하거든요

 

컬러값은 css 에 아래와 같이 정의 되어 있습니다.

#main_access_device ul li.pc:before{background-color:#03a9f5}

#main_access_device ul li.mobile:before{background-color:#616c77}

 

pc ($key 변수값), mobile ($key 변수값) 입니다.

어디를 어떻게 수정을 해야 color 값을 다르게 할 수 있는지요?

 

질문2. 현재날짜를 기준으로 이전 3일간, 또는 7일간의 데이터를 출력하려면 어떠한 형식으로 코드를 적용해야 할까요?

 

너무 초보자 이다 보니 방법을 잘 모르겠습니다.

고수님들의 도움 부탁드리겠습니다.

오늘 하루도 즐거운 하루 되세요~^^

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

답변 1개

채택된 답변
+20 포인트
붉은바람

</p>

<p><?php

 

$max = 0;

$sum_count = 0;

$arr = array();

 

$sql = " select * from {$g5['visit_table']}

          where vi_date between '$fr_date' and '$to_date' ";

$result = sql_query($sql);

while ($row=sql_fetch_array($result)) {

    $s = $row['vi_device'];

    if(!$s)

        $s = '기타';

 

    if( isset($arr[$s]) ){

        $arr[$s]++;

    } else {

        $arr[$s] = 1;

    }

 

    if ($arr[$s] > $max) $max = $arr[$s];

 

    $sum_count++;

}

?>

<script>

$(function(){

  $("#doughnutChart_device").drawDoughnutChart([

    <?php

    $i = 0;

    $k = 0;

    $save_count = -1;

    $tot_count = 0;</p>

<p>

    if (count($arr)) {</p>

<p>// 색깔배열지정</p>

<p>$arr_colors = array("#03a9f5","#616c77");</p>

<p>// 증가 idx 값</p>

<p>$idx = 0;

        arsort($arr);

        foreach ($arr as $key=>$value) {

            $count = $arr[$key];

            if ($save_count != $count) {

                $i++;

                $no = $i;

                $save_count = $count;

            } else {

                $no = '';

            }

            if (!$key) {

                $key = '기타';

            }

            $rate = ($count / $sum_count * 100);

            $s_rate = number_format($rate, 1);

    ?>    

    { title:"<?php echo $key; ?>", value:<?php echo $count ?>, color:"<?=$arr_colors[$idx]?>" },

    <?php</p>

<p>// idx++</p>

<p>$idx++;

        }

    }

    ?>

  ]);

});

</script></p>

<p>

 

 

2번

최근 7일 날짜 구하기 

$sql = " select * from {$g5['visit_table']} where vi_date >= '".date("Y-m-d",strtotime("-7 days") ) ."' ";

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

웹메이킹
3년 전
붉은바람님 친절한 답변감사드립니다.
붉은바람님이 알려주신 방법대로 수정하니 색상표현은 잘됩니다.

최근 7일날짜
$sql = " select * from {$g5['visit_table']} where vi_date >= '".date("Y-m-d",strtotime("-7 days") ) ."' ";
이렇게 적용하고
<li class="<?php echo $key; ?>"><?php echo $key; ?> : <?php echo $count ?></li>
이렇게 추가 했는데 이렇게 하는게 맞는건지요?

아직 접속데이터가 많지 않아 확인이 되지 않아서요..ㅠㅠ 확인좀 부탁드립니다.

즐거운 주말 되세요^^

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

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

로그인