好吧,我给你一个,我以前做的一个在网页上画统计图的php程序.
饼行图的算法是我自己写的,很丑陋,不要笑话.
visit.php3代码如下:
<?php
$id=@odbc_connect("wenhua","","");
$result=odbc_prepare($id,"SELECT count(*) as cn FROM visit WHERE view");
odbc_execute($result);
$dy = odbc_result($result, "cn");
$result=odbc_prepare($id,"SELECT count(*) as cn FROM visit WHERE NOT view");
odbc_execute($result);
$dn = odbc_result($result, "cn");
odbc_close($id);
$choose-=2;
function existipaddr()
{
global $dy,$dn,$choose;
$ip=getenv("REMOTE_ADDR");
$id=@odbc_connect("wenhua","","");
$result=odbc_prepare($id,"SELECT count(*) as cn FROM visit WHERE ip='".$ip."'");
odbc_execute($result);
$ret = odbc_result($result, "cn");
if ($ret==0)
{
if ($choose==-1)
{
$dy++;
}
else
{
$dn++;
}
$result=odbc_prepare($id,"INSERT INTO visit (ip,view) VALUES ('".$ip."',".$choose.")");
odbc_execute($result);
}
odbc_close($id);
return ($ret<>0);
}
function showresult($r)
{
global $dy,$dn;
switch ($r)
{
case 0:
Header("Content-type: text/html");
printf ("为保证统计结果的准确性,每人只能投票一次!");
break;
case 1:
Header("Content-type: text/html");
printf("<center>");
printf("<img src=//cgi-bin//visit.php3><br>");
printf("总共有".($dy+$dn)."人进行了投票,其中:<br>");
printf("赚钱的有<font color=red>".$dy."</font>人,赔钱的有<font color=blue>".$dn."</font>人。");
printf("</center>");
break;
}
return;
}
function writedata($c)
{
if (!existipaddr())
{
showresult(1);
}
else
{
showresult(0);
}
};
function showchart()
{
global $dy,$dn;
$al = $dy*360/($dy+$dn);
$alp = $al;
$al+=90;
$al*=0.0174532925199432957692369076848861;
$pw=100;
$ph=90;
$fontsize=2;
$rx=$pw/2;
$ry=$ph/2;
//$legend=getenv("REMOTE_ADDR");//$dy." vs ".$dn;
$legend=$dy." vs ".$dn;
$lef=strlen($legend)*imagefontwidth($fontsize);
$lef=($pw-$lef)/2;
$sx=80;
$sy=60;
Header("Content-type: image/gif");
$im = ImageCreate($pw,$ph);
/* Create a blank image */
$bgc = ImageColorAllocate($im,255,255,255);
$tc = ImageColorAllocate($im,0,0,0);
$yc = ImageColorAllocate($im,0,128,255);
$yc1 = ImageColorAllocate($im,0,96,191);
$nc = ImageColorAllocate($im,255,0,0);
$green = ImageColorAllocate($im,0,255,0);
$x2 = ($sx/2)*sin($al);
$y2 = ($sy/2)*cos($al);
ImageFilledRectangle($im,0,0,$pw,$ph,$bgc);
ImageString($im,$fontsize,$lef,4,$legend,$tc);
imagearc($im, $rx,$ry+10, $sx,$sy, 0,360,$tc);
imagefilltoborder($im, $rx,$ry+10, $tc, $yc1);
if ($alp>180)
{
imageline($im,$rx,$ry, (float)($rx+$x2),(float)$ry+$y2,$tc);
imageline($im,(float)($rx+$x2),(float)$ry+$y2,(float)($rx+$x2),(float)$ry+10+$y2,$tc);
imageline($im,$rx,$ry, $rx,$ry+10,$tc);
imageline($im,$rx,$ry+10, $rx+$sx/2,$ry+10,$tc);
imagefilltoborder($im, $rx+1,$ry+9, $tc, $nc);
};
imagearc($im, $rx,$ry, $sx,$sy, 0,360,$green);
imagefilltoborder($im, $rx,$ry,$green, $yc);
imagearc($im, $rx,$ry, $sx,$sy, 0,360,$tc);
imageline($im,$rx,$ry, (float)($rx+$x2),(float)$ry+$y2,$tc);
imageline($im,$rx,$ry, $rx+$sx/2,$ry,$tc);
imagefilltoborder($im, $rx+$sx/2-4,$ry-1, $tc, $nc);
ImageGif($im);
ImageDestroy($im);
return 1;
};
if (getenv("QUERY_STRING")=="")
{
showchart();
}
else
if ($act=="show")
{
showresult(1);
}
else
if (($choose==-1)or ($choose==0))
{
writedata($choose);
};
?>