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

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

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

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

Copy
<?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;

    if (count($arr)) {

        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:"#03a9f5" },

    <?php

        }

    }

    ?>

  ]);

});

</script>

질문1. { title:"<?php echo $key; ?>", value:<?php echo $count ?>, 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 포인트
Copy
<?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;


    if (count($arr)) {

// 색깔배열지정

$arr_colors = array("#03a9f5","#616c77");

// 증가 idx 값

$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

// idx++

$idx++;
        }
    }
    ?>
  ]);
});
</script>

2번

최근 7일 날짜 구하기 

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

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

답변에 대한 댓글 1개

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

최근 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>
이렇게 추가 했는데 이렇게 하는게 맞는건지요?

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

즐거운 주말 되세요^^

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

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

로그인
🐛 버그신고