چارت نموداری - حرفه ای

imanmir

Member
با سلام این یک چارت حرفه ای ولی یک مشکل من دارم اگه دقت کنید یک متغیر values داریم که باید آرایه پر بشه
ولی من می خوام به جای این اطلاعات اطلاعات دیتابیس باشه از foreach هم استفاده کردم نشد آخه ساختارش فقط باید
key=>val باشه؟



<?php
mysql_connect('localhost','root','');
mysql_select_db("databasename");
$q="select * from tabelname";
$r=mysql_query($q);
while($row=mysql_fetch_row($r))
{
$labe11[$n]=$row[2];
$n++
}
$size_x=800;
$size_y=600;
$title="Result in Comment-Mirmohammadi.net";
$title2="Head count(in 1.000)";
//foreach($labe11 as $key => $value)
//{
//$values="array($key=>$value)";
//echo $values;
//}
$values=array(
0=>1200,
1=>1300,
2=>1400,
3=>1500);

$max_value=8000;
$units=800;
$img=imagecreatetruecolor($size_x,$size_y);
imageantialias($img,true);
imagealphablending($img,true);
$bg_image='x.png';
$bg=imagecreatefrompng($bg_image);
$sizes=getimagesize($bg_image);
imagecopyresampled($img,$bg,0,0,0,0,$size_x,$size_y,$sizes[0],$sizes[1]);
$background=imagecolorallocatealpha($img,127,127,192,32);
imagefilledrectangle($img,20,20,$size_x-20,$size_y-80,$background);

imagefilledrectangle($img,20,$size_y-60,$size_x-20,$size_y-20,$background);

$barcolor=imagecolorallocatealpha($img,0,0,128,80);
$spacing=($size_x-140)/count($values);
$start_x=120;
foreach($values as $key=>$value)
{
$x1=$start_x + 0.2 * $spacing;
$x2=$start_x + 0.8 * $spacing;
$y1=$size_y - 120;
$y2=$y1- (($value/$max_value)* ($size_y - 160));
imagefilledrectangle($img,$x1,$y1,$x2,$y2,$barcolor);
$start_x +=$spacing;
}
$black=imagecolorallocate($img,0,0,0);
$grey=imagecolorallocate($img,128,128,192);
for($i=$units;$i<=$max_value;$i +=$units)
{
$x1=110;
$y1=$size_y-120-(($i/$max_value)*($size_y-160));
$x2=$size_x-20;
$y2=$y1;
imageline($img,$x1,$y1,$x2,$y2,($i%(2*$units))==0?$balck:$grey);
}
imageline($img,120,$size_y-120,120,40,$black);
imageline($img,120,$size_y-120,$size_x-20,$size_y-120,$black);
$c_x=$size_x/2;
$c_y=$size_y-40;
$box=imagettfbbox(20,0,'tahoma.ttf',$title);
$sx=$box[4]-$box[0];
$sy=$box[5]+$box[1];
imagettftext($img,20,0,$c_x-$sx/2,$c_y-($sy/2),$black,'tahoma.ttf',$title);
$c_x=50;
$c_y=($size_y-60)/2;
$box=imagettfbbox(14,90,'tahoma.ttf',$title2);
$sx=$box[4]-$box[0];
$sy=$box[5]+$box[1];
imagettftext($img,14,90,$c_x-($sx/2),$c_y-($sy/2),$black,'tahoma.ttf',$title2);
$c_y=$size_y-100;
$start_x=120;
foreach($values as $label=>$dummy)
{
$box=imagettfbbox(12,0,'tahoma.ttf',$label);
$sx=$box[4]-$box[0];
$sy=$box[5]+$box[1];
$c_x=$start_x + (0.5* $spacing);
imagettftext($img,12,0,$c_x-($sx/2),$c_y-($sy/2),$black,'tahoma.ttf',$label);
$start_x +=$spacing;
}
$r_x=100;
for($i=0;$i<=$max_value;$i+=($units*2))
{
$c_y=$size_y-120-(($i/$max_value)*($size_y-160));
$box=imagettfbbox(12,0,'tahoma.ttf',$i/100);
$sx=$box[4]-$box[0];
$sy=$box[5]+$box[1];
imagettftext($img,12,0,$r_x-$sx,$c_y-($sy/2),$black,'tahoma.ttf',$i/100);
}
header('Content-type:image/png');
header('Content-type:text/html;charset=windows-1252');
imagepng($img);
?>
 

tabib_m

Member
مقادیر رو از دیتابیس بخون و بریز توی آرایه:
کد:
while($row=mysql_fetch_row($query)){
$theArray[]=$row[0];
}
موفق باشید.
 

جدیدترین ارسال ها

بالا