차트관련 문의 도움부탁드립니다.

차트관련 문의 도움부탁드립니다.

QA

차트관련 문의 도움부탁드립니다.

본문

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

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

 

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


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


<?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") ) ."' ";

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

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

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

즐거운 주말 되세요^^

답변을 작성하시기 전에 로그인 해주세요.
전체 123,161 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT