동적그래프 질문입니다. 정보
동적그래프 질문입니다.본문
보람찬님의 동적그래프 관련 질문입니다.
main.php에서 stasticits_result.php를 두번 include하면
첫번체 include하는 결과가 잘못되게 나옵니다.
해결할 수 있는 방법이 있는지요 ?
main.php
<?
$project_id = '1111111111';
$po_id = 1;
include("./stasticits_result.php");
$po_id = 1;
include("./stasticits_result.php");
$project_id = '1111111111';
$po_id = 2;
include("./stasticits_result.php");
?>
stasticits_result.php
<?
include_once("./_common.php");
$po = sql_fetch(" select * from $g4[stasticits_table] where project_id = '$project_id' and po_id = '$po_id' ");
include_once("./_common.php");
$po = sql_fetch(" select * from $g4[stasticits_table] where project_id = '$project_id' and po_id = '$po_id' ");
if (!$po[po_id])
alert_close('설문조사 정보가 없습니다.');
$g4[title] = "설문조사 결과";
$po_subject = $po[po_subject];
$max = 1;
$total_po_cnt = 0;
for ($i=1; $i<=9; $i++) {
$poll = $po["po_poll{$i}"];
if ($poll == "") { break; }
$total_po_cnt += $po["po_cnt{$i}"];
$total_po_cnt = 0;
for ($i=1; $i<=9; $i++) {
$poll = $po["po_poll{$i}"];
if ($poll == "") { break; }
$total_po_cnt += $po["po_cnt{$i}"];
if ($po["po_cnt{$i}"] > $max)
$max = $po["po_cnt{$i}"];
}
$nf_total_po_cnt = number_format($total_po_cnt);
$max = $po["po_cnt{$i}"];
}
$nf_total_po_cnt = number_format($total_po_cnt);
unset($list);
$list = array();
$list = array();
for ($i=1; $i<=9; $i++) {
$poll = $po["po_poll" . $i];
if ($poll == "") { break; }
$poll = $po["po_poll" . $i];
if ($poll == "") { break; }
$list[$i][content] = $poll;
$list[$i][cnt] = $po["po_cnt" . $i];
echo " total_po_cnt = $total_po_cnt " ;
echo " total_po_cnt = $total_po_cnt " ;
if ($total_po_cnt > 0)
$list[$i][rate] = ($list[$i][cnt] / $total_po_cnt) * 100;
$list[$i][rate] = ($list[$i][cnt] / $total_po_cnt) * 100;
$bar = (int)($list[$i][cnt] / $max * 100);
$list[$i][bar] = $bar;
$list[$i][num] = $i;
}
$list[$i][bar] = $bar;
$list[$i][num] = $i;
}
?>
<script>
// 이거 원본 소스는 http://www.muhwa.com/!/sample/obxstickgraph/ 이사이트 입니다.
// G4에 맞게끔 변수값만 적용된 것 입니다.
IE=(window.showModalDialog) ? true : false;
function obxGetColor(color,gap) {
var rtn='',col,tmp;
for(var x=0;x <6; x+=2) {
col=parseInt(color.substr(x,2),16)+gap;
if (col > 255) col = 255;
else if (col < 0) col=0;
if(col < 10) rtn+='0'+col.toString(16);
else rtn+=col.toString(16);
}
return rtn;
}
function obxGetColor(color,gap) {
var rtn='',col,tmp;
for(var x=0;x <6; x+=2) {
col=parseInt(color.substr(x,2),16)+gap;
if (col > 255) col = 255;
else if (col < 0) col=0;
if(col < 10) rtn+='0'+col.toString(16);
else rtn+=col.toString(16);
}
return rtn;
}
function obxStickGraph(dsize) {
this.step=3;
this.speed=10;
this.total=0;
this.max=0;
this.dsize=dsize;
this.item= new Object();
this.add = function (id,size,color,text) {
this.total += size;
this.max=Math.max(this.max,size);
this.item[id]= {'size' : size, 'color' : color.replace('#',''), 'text' : text}
}
this.draw = function (id,action) {
var dColor=obxGetColor(this.item[id].color,-20);
document.write("<div></div>");
//this.itemid.div=document.body.appendChild(document.createElement('div'));
this.step=3;
this.speed=10;
this.total=0;
this.max=0;
this.dsize=dsize;
this.item= new Object();
this.add = function (id,size,color,text) {
this.total += size;
this.max=Math.max(this.max,size);
this.item[id]= {'size' : size, 'color' : color.replace('#',''), 'text' : text}
}
this.draw = function (id,action) {
var dColor=obxGetColor(this.item[id].color,-20);
document.write("<div></div>");
//this.itemid.div=document.body.appendChild(document.createElement('div'));
var divs=document.getElementsByTagName('div');
this.item[id].div=divs[divs.length-1];
this.item[id].div.style.borderLeft="1px solid #"+dColor;
this.item[id].div.style.overflow="hidden";
this.item[id].div.style.height="11px";
if(!action) this.actDraw(id);
else this.actDraw(id,5);
}
this.getCss= function(width,height,color,bwidth,bcolor) {
if(width<1)width=1;
return "overflow:hidden;width:"+width+";height:"+height+";background-color:"+color+";border-right:"+bwidth+"px #"+bcolor+" solid";
}
this.actDraw= function(id,limit) {
var pp = this.item[id].size / this.total;
var sizep = this.item[id].size / this.max;
if(!limit) var size=this.dsize * sizep;
else size=limit;
var hit = Math.round(this.max/this.dsize*size);
var percent =(Math.round(this.max/this.dsize*size)/this.total*100).toString().match(/[0-9]*(?:.[0-9][0-9])?/);
var text = (this.item[id].text) ? this.item[id].text.replace('#',hit).replace('$',percent) : percent + " %"
var Color=this.item[id].color;
var hColor=obxGetColor(Color,20);
var hhColor=obxGetColor(Color,30);
var dColor=obxGetColor(this.item[id].color,-20);
var add='',d;
if(IE) d=new Array(3,2,1);
else d=new Array(3,4,5);
this.item[id].div.innerHTML= ''
+'<div style="'+this.getCss(size-d[0],1,hColor,1,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[1],2,hColor,3,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[2],2,hColor,5,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[2],1,hhColor,5,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[2],2,Color,5,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[1],2,Color,3,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[0],1,dColor,1,hhColor)+'"></div>'
+'<span style="position:relative;top:'+(-11-IE)+'px;left:'+(size+5)+'px;font:7pt verdana">'+text+'</span>'
if(limit)
if(this.dsize * sizep > limit) {
obxStickGraphRunObject=this;
setTimeout('obxStickGraphRunObject.actDraw("'+id+'",'+(limit+this.step)+');',this.speed);
}else{
setTimeout('obxStickGraphRunObject.actDraw("'+id+'");',this.speed);
}
}
this.item[id].div=divs[divs.length-1];
this.item[id].div.style.borderLeft="1px solid #"+dColor;
this.item[id].div.style.overflow="hidden";
this.item[id].div.style.height="11px";
if(!action) this.actDraw(id);
else this.actDraw(id,5);
}
this.getCss= function(width,height,color,bwidth,bcolor) {
if(width<1)width=1;
return "overflow:hidden;width:"+width+";height:"+height+";background-color:"+color+";border-right:"+bwidth+"px #"+bcolor+" solid";
}
this.actDraw= function(id,limit) {
var pp = this.item[id].size / this.total;
var sizep = this.item[id].size / this.max;
if(!limit) var size=this.dsize * sizep;
else size=limit;
var hit = Math.round(this.max/this.dsize*size);
var percent =(Math.round(this.max/this.dsize*size)/this.total*100).toString().match(/[0-9]*(?:.[0-9][0-9])?/);
var text = (this.item[id].text) ? this.item[id].text.replace('#',hit).replace('$',percent) : percent + " %"
var Color=this.item[id].color;
var hColor=obxGetColor(Color,20);
var hhColor=obxGetColor(Color,30);
var dColor=obxGetColor(this.item[id].color,-20);
var add='',d;
if(IE) d=new Array(3,2,1);
else d=new Array(3,4,5);
this.item[id].div.innerHTML= ''
+'<div style="'+this.getCss(size-d[0],1,hColor,1,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[1],2,hColor,3,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[2],2,hColor,5,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[2],1,hhColor,5,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[2],2,Color,5,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[1],2,Color,3,hhColor)+'"></div>'
+'<div style="'+this.getCss(size-d[0],1,dColor,1,hhColor)+'"></div>'
+'<span style="position:relative;top:'+(-11-IE)+'px;left:'+(size+5)+'px;font:7pt verdana">'+text+'</span>'
if(limit)
if(this.dsize * sizep > limit) {
obxStickGraphRunObject=this;
setTimeout('obxStickGraphRunObject.actDraw("'+id+'",'+(limit+this.step)+');',this.speed);
}else{
setTimeout('obxStickGraphRunObject.actDraw("'+id+'");',this.speed);
}
}
}
</script>
<table width="600" border="0" cellspacing="0" cellpadding="0" align=center>
<tr>
<td align="center">
<table width="600" height="70" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle" bgcolor="#EBEBEB">
<table width="590" height="60" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="30" align="center" bgcolor="#FFFFFF" ><img src="<?=$g4[bbs_img_path]?>/icon_01.gif" width="5" height="5"></td>
<td width="40" align="left" bgcolor="#FFFFFF" ><font color="#666666"><b>질 문</b></font></td>
<td width="20" align="left" bgcolor="#FFFFFF" >l</td>
<td width="500" bgcolor="#FFFFFF" ><font color="#666666"><b><?=$po_subject?></b> (전체 <?=$nf_total_po_cnt?>표)</font></td>
</tr>
</table></td>
</tr>
</table>
<tr>
<td align="center">
<table width="600" height="70" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle" bgcolor="#EBEBEB">
<table width="590" height="60" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="30" align="center" bgcolor="#FFFFFF" ><img src="<?=$g4[bbs_img_path]?>/icon_01.gif" width="5" height="5"></td>
<td width="40" align="left" bgcolor="#FFFFFF" ><font color="#666666"><b>질 문</b></font></td>
<td width="20" align="left" bgcolor="#FFFFFF" >l</td>
<td width="500" bgcolor="#FFFFFF" ><font color="#666666"><b><?=$po_subject?></b> (전체 <?=$nf_total_po_cnt?>표)</font></td>
</tr>
</table></td>
</tr>
</table>
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="10"></td>
</tr>
</table>
<tr>
<td height="10"></td>
</tr>
</table>
<table width=600 bgcolor=#ffffff cellpadding=1 cellspacing=0>
<tr>
<td>
<table width=100% cellpadding=6 cellspacing=1>
<script>
grp=new obxStickGraph(200); //젤 긴게 200px 만하게 grp란걸 만든다
grp.step = 3;
grp.speed = 5;
//그려주기(grp.draw()) 전에 이런 코드를 넣어주셔도 됩니다.
//동적으로 그릴때 쓰는 옵션인데
//스텝은 한번에 늘어나는 길이(픽셀)고, 스피드는 한번 돌아가는;; 속도입니다. 적을수록 빠르고 0이 최소값입니다.
</script>
<tr>
<td>
<table width=100% cellpadding=6 cellspacing=1>
<script>
grp=new obxStickGraph(200); //젤 긴게 200px 만하게 grp란걸 만든다
grp.step = 3;
grp.speed = 5;
//그려주기(grp.draw()) 전에 이런 코드를 넣어주셔도 됩니다.
//동적으로 그릴때 쓰는 옵션인데
//스텝은 한번에 늘어나는 길이(픽셀)고, 스피드는 한번 돌아가는;; 속도입니다. 적을수록 빠르고 0이 최소값입니다.
</script>
<? for ($i=1; $i<=count($list); $i++) { ?>
<tr bgcolor=#FFFFFF>
<td bgcolor="#EBF1F5" width=20%><?=$list[$i][num]?>. <?=$list[$i][content]?></td>
<td bgcolor="#A1C9E4" width=80%>
<?
$pers = number_format($list[$i][rate], 1); // 퍼센트별 색상주기위하여...(퍼센트는 우선 제홈기준에 맞춘것임 ^^;;)
if ($pers <= 10) {
$s_color = "#D1D3D3";
} else if ($pers < 15) {
$s_color = "#F8CF7B";
} else if ($pers < 20) {
$s_color = "#3399FF";
} else if ($pers < 25) {
$s_color = "#AAEEFF";
} else { $s_color="#FDB480"; }
echo " list[i][num] ";
echo $list[$i][num];
echo "list[i][cnt ";
echo $list[$i][cnt] ;
<tr bgcolor=#FFFFFF>
<td bgcolor="#EBF1F5" width=20%><?=$list[$i][num]?>. <?=$list[$i][content]?></td>
<td bgcolor="#A1C9E4" width=80%>
<?
$pers = number_format($list[$i][rate], 1); // 퍼센트별 색상주기위하여...(퍼센트는 우선 제홈기준에 맞춘것임 ^^;;)
if ($pers <= 10) {
$s_color = "#D1D3D3";
} else if ($pers < 15) {
$s_color = "#F8CF7B";
} else if ($pers < 20) {
$s_color = "#3399FF";
} else if ($pers < 25) {
$s_color = "#AAEEFF";
} else { $s_color="#FDB480"; }
echo " list[i][num] ";
echo $list[$i][num];
echo "list[i][cnt ";
echo $list[$i][cnt] ;
?>
<script>
grp.add('id<?=$list[$i][num]?>',<?=$list[$i][cnt]?>,'<?=$s_color?>','# 표 ($ %)');
<script>
grp.add('id<?=$list[$i][num]?>',<?=$list[$i][cnt]?>,'<?=$s_color?>','# 표 ($ %)');
//그 grp로 명령을 내립니다.
// "id값" 아이디로 투표수 값을 넘겨준다
grp.draw('id<?=$list[$i][num]?>',true);
// "id값" 아이디로 투표수 값을 넘겨준다
grp.draw('id<?=$list[$i][num]?>',true);
//아이디에 해당되는 그래프를 출력합니다.
//이때 두번째 인자는 옵션이고 true로 해주면 동적으로 그립니다.
</script>
</td>
</tr>
<? } ?>
</table></td>
</tr>
</table>
//이때 두번째 인자는 옵션이고 true로 해주면 동적으로 그립니다.
</script>
</td>
</tr>
<? } ?>
</table></td>
</tr>
</table>
댓글 전체
main.php
<?
$project_id = '1111111111';
$po_id = 1;
include("./stasticits_result.php");
여기서 po_id=1인 그래프 그리고,
$project_id = '1111111111';
$po_id = 2;
include("./stasticits_result.php");
여기서 po_id=2인 그래프 그리고,
?>
이렇게 되어 있나요?
<?
$project_id = '1111111111';
$po_id = 1;
include("./stasticits_result.php");
여기서 po_id=1인 그래프 그리고,
$project_id = '1111111111';
$po_id = 2;
include("./stasticits_result.php");
여기서 po_id=2인 그래프 그리고,
?>
이렇게 되어 있나요?
네 그렇게 되어있습니다.
가로 그래프
저도 잘 알지는 못하지만 그래프 그려주는 부분에서 각 id에 대한 변수를 지정해서 해야할 것 같다는 생각이 듭니다.
쉬운 예를 들자면 그누보드에 기본적으로 배포되는 스크롤 최신글에서
한페이지에서 여러개를 쓰기 위하여 <?=uni?>라는 변수를 사용한 것을 참고하시면 될듯 합니다.
쉬운 예를 들자면 그누보드에 기본적으로 배포되는 스크롤 최신글에서
한페이지에서 여러개를 쓰기 위하여 <?=uni?>라는 변수를 사용한 것을 참고하시면 될듯 합니다.