با سلام این یک چارت حرفه ای ولی یک مشکل من دارم اگه دقت کنید یک متغیر 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);
?>
ولی من می خوام به جای این اطلاعات اطلاعات دیتابیس باشه از 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);
?>