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>
실행 결과
<?
# 위의 코드는 막대그래프가 움직이지만 문제가 있어서 이걸로 바꿨다. 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>
댓글목록
등록된 댓글이 없습니다.