shaukathayder Posted December 8, 2009 Share Posted December 8, 2009 Can anyone help me on the following code which I tried to run in a WAMP server its not working. piechart.php <?php //////////////////////////////////////////////////////////////// // PHP script made by Rasmus - [www.peters1.dk] // //////////////////////////////////////////////////////////////// $show_label = true; // true = show label, false = don't show label. $show_percent = true; // true = show percentage, false = don't show percentage. $show_text = true; // true = show text, false = don't show text. $show_parts = false; // true = show parts, false = don't show parts. $label_form = 'square'; // 'square' or 'round' label. $width = 199; $background_color = 'FFFFFF'; // background-color of the chart... $text_color = '000000'; // text-color. $colors = array('003366', 'CCD6E0', '7F99B2','F7EFC6', 'C6BE8C', 'CC6600','990000','520000','BFBFC1','808080'); // colors of the slices. $shadow_height = 16; // Height on shadown. $shadow_dark = true; // true = darker shadow, false = lighter shadow... // DON'T CHANGE ANYTHING BELOW THIS LINE... $data = $_GET["data"]; $label = $_GET["label"]; //$data = "10*9*11*10"; //$label = "Denmark*Germany*USA*Sweden"; $height = $width/2; $data = explode('*',$data); if ($label != '') $label = explode('*',$label); for ($i = 0; $i < count($label); $i++) { if ($data[$i]/array_sum($data) < 0.1) $number[$i] = ' '.number_format(($data[$i]/array_sum($data))*100,1,',','.').'%'; else $number[$i] = number_format(($data[$i]/array_sum($data))*100,1,',','.').'%'; if (strlen($label[$i]) > $text_length) $text_length = strlen($label[$i]); } if (is_array($label)) { $antal_label = count($label); $xtra = (5+15*$antal_label)-($height+ceil($shadow_height)); if ($xtra > 0) $xtra_height = (5+15*$antal_label)-($height+ceil($shadow_height)); $xtra_width = 5; if ($show_label) $xtra_width += 20; if ($show_percent) $xtra_width += 45; if ($show_text) $xtra_width += $text_length*8; if ($show_parts) $xtra_width += 35; } $img = imagecreatetruecolor($width+$xtra_width, $height+ceil($shadow_height)+$xtra_height); ImageFill($img, 0, 0, colorHex($img, $background_color)); foreach ($colors as $colorkode) { $fill_color[] = colorHex($img, $colorkode); $shadow_color[] = colorHexshadow($img, $colorkode, $shadow_dark); } $label_place = 5; if (is_array($label)) { for ($i = 0; $i < count($label); $i++) { if ($label_form == 'round' && $show_label) { imagefilledellipse($img,$width+11,$label_place+5,10,10,colorHex($img, $colors[$i % count($colors)])); imageellipse($img,$width+11,$label_place+5,10,10,colorHex($img, $text_color)); } else if ($label_form == 'square' && $show_label) { imagefilledrectangle($img,$width+6,$label_place,$width+16,$label_place+10,colorHex($img, $colors[$i % count($colors)])); imagerectangle($img,$width+6,$label_place,$width+16,$label_place+10,colorHex($img, $text_color)); } if ($show_percent) $label_output = $number[$i].' '; if ($show_text) $label_output = $label_output.$label[$i].' '; if ($show_parts) $label_output = $label_output.$data[$i]; imagestring($img,'2',$width+20,$label_place,$label_output,colorHex($img, $text_color)); $label_output = ''; $label_place = $label_place + 15; } } $centerX = round($width/2); $centerY = round($height/2); $diameterX = $width-4; $diameterY = $height-4; $data_sum = array_sum($data); $start = 270; for ($i = 0; $i < count($data); $i++) { $value += $data[$i]; $end = ceil(($value/$data_sum)*360) + 270; $slice[] = array($start, $end, $shadow_color[$value_counter % count($shadow_color)], $fill_color[$value_counter % count($fill_color)]); $start = $end; $value_counter++; } for ($i=$centerY+$shadow_height; $i>$centerY; $i--) { for ($j = 0; $j < count($slice); $j++) { if ($slice[$j][0] != $slice[$j][1]) ImageFilledArc($img, $centerX, $i, $diameterX, $diameterY, $slice[$j][0], $slice[$j][1], $slice[$j][2], IMG_ARC_PIE); } } for ($j = 0; $j < count($slice); $j++) { if ($slice[$j][0] != $slice[$j][1]) ImageFilledArc($img, $centerX, $centerY, $diameterX, $diameterY, $slice[$j][0], $slice[$j][1], $slice[$j][3], IMG_ARC_PIE); } OutputImage($img); ImageDestroy($img); function colorHex($img, $HexColorString) { $R = hexdec(substr($HexColorString, 0, 2)); $G = hexdec(substr($HexColorString, 2, 2)); $B = hexdec(substr($HexColorString, 4, 2)); return ImageColorAllocate($img, $R, $G, $; } function colorHexshadow($img, $HexColorString, $mork) { $R = hexdec(substr($HexColorString, 0, 2)); $G = hexdec(substr($HexColorString, 2, 2)); $B = hexdec(substr($HexColorString, 4, 2)); if ($mork) { ($R > 99) ? $R -= 100 : $R = 0; ($G > 99) ? $G -= 100 : $G = 0; ($B > 99) ? $B -= 100 : $B = 0; } else { ($R < 220) ? $R += 35 : $R = 255; ($G < 220) ? $G += 35 : $G = 255; ($B < 220) ? $B += 35 : $B = 255; } return ImageColorAllocate($img, $R, $G, $; } function OutputImage($img) { header('Content-type: image/jpg'); ImageJPEG($img,NULL,100); } ?> -----chart.php-------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[www.w3.org]; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Untitled Document</title> </head> <body> <img src="[localhost]; </body> </html> I am call the piechart.php file from within the chart.php file. But when I try to view the file in the browser For IE is a cross mark in the img Whereas in Firefox its is just a blank page. I have GD library installed and using Windows XP and WAMP. Can any one help me on that.. Its urgent... Quote Link to comment Share on other sites More sharing options...
oni-kun Posted December 8, 2009 Share Posted December 8, 2009 Well for starters. Your code is wrong for the HTML, It puts an X because it's invalid markup! "<img src="[localhost]; " Needs to be <img src="http://127.0.0.1/chart.php"/> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.