동적그래프 질문입니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

동적그래프 질문입니다. 정보

동적그래프 질문입니다.

본문

보람찬님의 동적그래프 관련 질문입니다.
 
main.php에서  stasticits_result.php를 두번 include하면
첫번체 include하는 결과가 잘못되게 나옵니다.
해결할 수 있는 방법이 있는지요 ?
 
main.php
<?
 
  $project_id  = '1111111111';
  $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' ");
  
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}"];
    if ($po["po_cnt{$i}"] > $max)
        $max = $po["po_cnt{$i}"];
}
$nf_total_po_cnt = number_format($total_po_cnt);
unset($list);
$list = array();
for ($i=1; $i<=9; $i++) {
    $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 " ;
    if ($total_po_cnt > 0)
        $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;
}
 
?>
<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 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'));
            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);
            }
        }
    }
    </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>
        <table width="600" border="0" cellspacing="0" cellpadding="0">
        <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>
                <? 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] ;
                    ?>
<script>
 
             grp.add('id<?=$list[$i][num]?>',<?=$list[$i][cnt]?>,'<?=$s_color?>','# 표 ($ %)');
 //그 grp로 명령을 내립니다.
 // "id값" 아이디로 투표수 값을 넘겨준다
 
 grp.draw('id<?=$list[$i][num]?>',true);
 //아이디에 해당되는 그래프를 출력합니다.
 //이때 두번째 인자는 옵션이고 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인 그래프 그리고,
?>

이렇게 되어 있나요?
저도 잘 알지는 못하지만 그래프 그려주는 부분에서 각 id에 대한 변수를 지정해서 해야할 것 같다는 생각이 듭니다.
쉬운 예를 들자면 그누보드에 기본적으로 배포되는 스크롤 최신글에서
한페이지에서 여러개를 쓰기 위하여 <?=uni?>라는 변수를 사용한 것을 참고하시면 될듯 합니다.
© SIRSOFT
현재 페이지 제일 처음으로