차트관련 문의 도움부탁드립니다. 채택완료
차트 구현방법은 여러 자료들을 토대로 작업을해서 출력은 잘 되었는데요
잘 안되는 부분이 있어 이렇게 문의드립니다.
사용한 소스는 아래와 같습니다.
</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개
</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개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
붉은바람님이 알려주신 방법대로 수정하니 색상표현은 잘됩니다.
최근 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>
이렇게 추가 했는데 이렇게 하는게 맞는건지요?
아직 접속데이터가 많지 않아 확인이 되지 않아서요..ㅠㅠ 확인좀 부탁드립니다.
즐거운 주말 되세요^^