php로 엠파스'와 같은 설문조사 그래프' 만드는 방법 > php

본문 바로가기
사이트 내 전체검색

php

php로 엠파스'와 같은 설문조사 그래프' 만드는 방법

페이지 정보

작성자 서방님 댓글 0건 조회 154회 작성일 06-09-14 15:58

본문

<?
# [ 엠파스'와 같은 설문조사 그래프' 만드는 방법 ]

# 업무에서는 이 코드'보다는 아래에 있는 두번째 코드''를 쓰는것이 바람직해 보인다.

 

# 오늘 설문조사'관련 게시판을 만들던중에 그래프'만드는 방법을 정리해봤다.
# 네티즌개발자'라면 떼다 붙여서 응용하는 센스~~ ㅡ_ㅡ''' 공짜니 마구써라.

# 1단계 - A, B 값의 1을 제외한 최대공약수(C)를 구한다.
# 2단계 - A, B 값을 C로 나눈다.
# 3단계 - 나눠진 A, B 값을 더한 D로 각각의 퍼센트(%)를 만든다. A/D * 100 = %   B/D * 100 = %


# [ 예제 ]
# 1단계
# 72 : 54  - A, B의 최대공약수(C) 18
# 2단계
# 72/18 = 4, 54/18 = 3 - 4:3  C로 나눈 값.
# 3단계
# 4+3 = 7   4/7 * 100 = 400/7 = 57.1428   3/7 * 100 = 300/7 = 42.8571
# 두값을 보면 대략 100% 이다. 완전한 100%를 만들려면 어떻게 하는가가 남았다.
# 57.1%의 0.1%는 잘라버리고, 42.8%의 0.8%는 살리는 방법이 좋아보인다.
# 결과적으로 57% vs 43% 로 완료.

# 전에 ㅡ_ㅡ;;;; 플래시로 만든게 어디있는거 같은데.... 걍 귀찮아서 이걸 써봤다.
# 최대공약수'가 1이 나오는 문제'가 있어서 조금 바꿔봤다.


# [ 실제 사용코드 ]
# 1단계 - 1을 제외한 최대공약수(numG1)'를 구한다.
# 유클리드 호제법 - http://blog.naver.com/mokuzin21/25927465
$numA = 10;
$numB = 10000;
$num1 = $numA;
$num2 = $numB;
$num1num2 = $num1*$num2;

echo("공약수는 ");
while($num2)
{
 $remainder = $num1%$num2;
 if( $num1 == 1 )
 {
 }
 else if( $num2 == 1 )
 {
 }
 else if( $num2 != 1 )
 {
  $num1 = $num2;
 }
 echo("[$num1] ");
 $num2 = $remainder;
}
$numG1 = $num1;
$numG2 = $num1num2/$num1;

echo("<BR>");
echo("최대공약수는 $numG1<BR>");
echo("최소공배수는 $numG2<BR>");

echo("numA $numA<BR>");
echo("numB $numB<BR>");
# 2단계 - numA, numB값을 최대공약수(numG1)로 나눈다.
$numGA = $numA/$numG1;
$numGB = $numB/$numG1;

# 3단계 - 공약수로 나눠진 결과값 numGA, numGB 값을 더한 numGC로 각각의 퍼센트(%)를 만든다. A/C * 100 = %   B/C * 100 = %

$numGC = $numGA + $numGB;       # numGC 는 공약수로 나눠진 A, B값을 더한 값. 으로 분모'가 된다.
$numGA = $numGA/$numGC * 100;     # numGA 의 퍼센트(%)를 얻었다.
$numGB = $numGB/$numGC * 100;     # numGB 의 퍼센트(%)를 얻었다.
$numGA = Round($numGA, 2);
$numGB = Round($numGB, 2);
$numGAW = $numGA * 2;
$numGBW = $numGB * 2;
?>

 


<html>
<head><title>table resize</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
timer = null; // 타이머
sizeP = 0;    // Plus 최대치 초기화
sizeM = 0;    // Minus최대치 초기화
speed = 10;   // 갱신속도

function setPlus( size )                    // 최대치 값 적용
{
 sizeP = size;
 myObj = document.getElementById("SizePlus");         // 개체의 구성 요소 가져옴
 curWidth = parseInt(myObj.style.width);            // 오브젝트의 현재 높이를 구함
 if(curWidth < sizeP)
 {
  // 최대치보다 작으면
  myObj.style.width = ((sizeP - curWidth)/50) + curWidth;   // 증가
  timer = setTimeout("setPlus(sizeP)", speed);
  // speed 만큼의 시간이 지난 후에 다시 함수 호출
 }
 else
 {
  clearTimeout(timer);                    //최대치 이상이면 그만
 }
}

function setMinus( size )                   // 최대치 값 적용
{
 sizeM = size;
 myObj = document.getElementById("SizeMinus");         // 개체의 구성 요소 가져옴
 curWidth = parseInt(myObj.style.width);            // 오브젝트의 현재 높이를 구함
 if(curWidth < sizeM)
 {
  // 최대치보다 작으면
  myObj.style.width = ((sizeM - curWidth)/50) + curWidth;   // 증가
  timer = setTimeout("setMinus(sizeM)", speed);
  // speed 만큼의 시간이 지난 후에 다시 함수 호출
 }
 else
 {
  clearTimeout(timer);                    //최대치 이상이면 그만
 }
}
//-->
</SCRIPT>
</head>

<body onload="setMinus(<?=$numGAW?>);setPlus(<?=$numGBW?>);">
<button onclick="setMinus(<?=$numGAW?>)">Minus</button>
<button onclick="clearTimeout(timer);">stop</button>
<button onclick="setPlus(<?=$numGBW?>)">Plus</button>

<table border="1" width="400" cellpadding="0" cellspacing="0" height="20">
    <tr>
        <td width="200" height="20" align="right">
         <?=$numGAW?>%/
        </td>
        <td width="200" height="20" align="left">
         <?=$numGBW?>%
        </td>
    </tr>
</table>

<table border="1" width="400" cellpadding="0" cellspacing="0" height="20">
    <tr>
        <td width="200" height="20" align="right">
         <?=$numGA?>%/
        </td>
        <td width="200" height="20" align="left">
         <?=$numGB?>%
        </td>
    </tr>
</table>

<table border="1" width="400" cellpadding="0" cellspacing="0" height="20">
    <tr>
        <td width="200" height="20" align="right">
            <table>
                <tr>
                    <td id="SizeMinus" style="width:1; height:20; background-color:red"></td>
                </tr>
            </table>
        </td>
        <td width="200" height="20" align="left">
            <table>
                <tr>
                    <td id="SizePlus" style="width:1; height:20; background-color:blue"></td>
                </tr>
            </table>
        </td>
    </tr>
</table>
</body>
</html>

 

 

 

실행 결과

 

download.blog?fhandle=MDdPYm5AZnM5LmJsb2cuZGF1bS5uZXQ6L0lNQUdFLzAvMTUuYm1wLnRodW1i&filename=15.bmp

 

download.blog?fhandle=MDdPYm5AZnM5LmJsb2cuZGF1bS5uZXQ6L0lNQUdFLzAvMTYuYm1wLnRodW1i&filename=16.bmp

 

 

 

 

 

 

 

 

 


<?
# 위의 코드는 막대그래프가 움직이지만 문제가 있어서 이걸로 바꿨다. 0 또는 1값을 넣어도 정상 작동된다.

# 업무에서는 이 코드'를 쓰는것이 바람직해 보인다.

 

# [ 엠파스'와 같은 설문조사 그래프' 만드는 방법 ]
# 오늘 설문조사'관련 게시판을 만들던중에 그래프'만드는 방법을 정리해봤다.
# 네티즌개발자'라면 떼다 붙여서 응용하는 센스~~ ㅡ_ㅡ''' 공짜니 마구써라.
# 0과 1값을 넣었을때 Division by zero in 에러'가 발생하는 문제가 있어. 임시로 0값을 넣어줬다.

# 1단계 - A, B 값의 1을 제외한 최대공약수(C)를 구한다.
# 2단계 - A, B 값을 C로 나눈다.
# 3단계 - 나눠진 A, B 값을 더한 D로 각각의 퍼센트(%)를 만든다. A/D * 100 = %   B/D * 100 = %


# [ 예제 ]
# 1단계
# 72 : 54  - A, B의 최대공약수(C) 18
# 2단계
# 72/18 = 4, 54/18 = 3 - 4:3  C로 나눈 값.
# 3단계
# 4+3 = 7   4/7 * 100 = 400/7 = 57.1428   3/7 * 100 = 300/7 = 42.8571
# 두값을 보면 대략 100% 이다. 완전한 100%를 만들려면 어떻게 하는가가 남았다.
# 57.1%의 0.1%는 잘라버리고, 42.8%의 0.8%는 살리는 방법이 좋아보인다.
# 결과적으로 57% vs 43% 로 완료.

# 전에 ㅡ_ㅡ;;;; 플래시로 만든게 어디있는거 같은데.... 걍 귀찮아서 이걸 써봤다.
# 최대공약수'가 1이 나오는 문제'가 있어서 조금 바꿔봤다.


# [ 실제 사용코드 ]
# 1단계 - 1을 제외한 최대공약수(numG1)'를 구한다.
# 유클리드 호제법 - http://blog.naver.com/mokuzin21/25927465
$numA = 1;
$numB = 2111;
$num1 = $numA;
$num2 = $numB;
$num1num2 = $num1*$num2;


echo("공약수는 ");

while($num2)
{
 $remainder = $num1%$num2;
 if( $num1 == 1 )
 {
 }
 else if( $num2 == 1 )
 {
 }
 else if( $num2 != 1 )
 {
  $num1 = $num2;
 }
 echo("[$num1] ");
 $num2 = $remainder;
}
$numG1 = $num1;
if( $num1num2 == 0 )
{
 $num1num2 = 0;
}
else
{
 $numG2 = $num1num2/$num1;
}

echo("<BR>");
echo("최대공약수는 $numG1<BR>");
echo("최소공배수는 $numG2<BR>");

echo("numA $numA<BR>");
echo("numB $numB<BR>");

# 2단계 - numA, numB값을 최대공약수(numG1)로 나눈다.
if( $numA == 0|| $numG1 == 0 )
{
 $numGA = 0;
}
else
{
 $numGA = $numA/$numG1;
}

if( $numB == 0 || $numG1 == 0 )
{
 $numGB = 0;
}
else
{
 $numGB = $numB/$numG1;
}

# 3단계 - 공약수로 나눠진 결과값 numGA, numGB 값을 더한 numGC로 각각의 퍼센트(%)를 만든다. A/C * 100 = %   B/C * 100 = %
$numGC = $numGA + $numGB;       # numGC 는 공약수로 나눠진 A, B값을 더한 값. 으로 분모'가 된다.

if( $numGA == 0 || $numGC == 0 )
{
 $numGA = 0;
}
else
{
 $numGA = $numGA/$numGC * 100;     # numGA 의 퍼센트(%)를 얻었다.
}

if( $numGB == 0 || $numGC == 0 )
{
 $numGB = 0;
}
else
{
 $numGB = $numGB/$numGC * 100;     # numGB 의 퍼센트(%)를 얻었다.
}

if( $numA == 0 && $numB == 1 )
{
 $numGA = 0;
 $numGB = 100;
}
$numGA = Round($numGA, 2);
$numGB = Round($numGB, 2);
$numGAW = $numGA * 2;
$numGBW = $numGB * 2;

echo "--$numGAW/ $numGBW<BR>";
?>

 


<html>
<head><title>table resize</title>
</head>

<body onload="">
<table border="1" width="400" cellpadding="0" cellspacing="0" height="20">
    <tr>
        <td width="200" height="20" align="right">
         <?=$numGAW?>%/
        </td>
        <td width="200" height="20" align="left">
         <?=$numGBW?>%
        </td>
    </tr>
</table>

<table border="1" width="400" cellpadding="0" cellspacing="0" height="20">
    <tr>
        <td width="200" height="20" align="right">
         <?=$numGA?>%/
        </td>
        <td width="200" height="20" align="left">
         <?=$numGB?>%
        </td>
    </tr>
</table>

<table border="1" width="400" cellpadding="0" cellspacing="0" height="20">
    <tr>
        <td width="200" height="20" align="right">
            <table>
                <tr>
                    <td id="SizeMinus" style="width:<?=$numGAW?>; height:20; background-color:red"></td>
                </tr>
            </table>
        </td>
        <td width="200" height="20" align="left">
            <table>
                <tr>
                    <td id="SizePlus" style="width:<?=$numGBW?>; height:20; background-color:blue"></td>
                </tr>
            </table>
        </td>
    </tr>
</table>
</body>
</html>

댓글목록

등록된 댓글이 없습니다.

Total 612건 41 페이지
게시물 검색

회원로그인

접속자집계

오늘
67
어제
84
최대
1,347
전체
154,438
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.