For special offers and annoucements, please enter your email address below.
In this tutorial I'm going to show you how to make a php file that can take a series of values and turn them into a horizontal bar graph. This function is often useful when making polls - but the function can be used for all manner of bar charts. The end result should look like this:
We are going to create two files. First our page (page.php), and secondly the file that contains the bar chart function - which outputs itself as an image (graph.php).
STEP 1:
First we create the html file. In this file we define the three values to be converted into the bars of the chart. We also create an image with a src value of our graph.php file.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Page.php</title> </head> <body> <?php //define 3 values and their titles $a = '12'; $aTitle= 'oranges'; $b = '123'; $bTitle = 'apples'; $c = '40'; $cTitle = 'bananas'; ?> <img src="graph.php?<?="a=$a&b=$b&c=$c&aTitle=$aTitle&bTitle=$bTitle&cTitle$cTitle";?>" /> </body> </html>
STEP 2:
Now we create the php file which will output itself as a PNG image.
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) { ob_start("ob_gzhandler"); } else { ob_start(); } //header to store the file header("Expires: ".date("D, j M Y h:i:s", mktime(0, 0, 0, date("n")+1, date("j")+1, 2020))." GMT"); header("Content-Type: image/png"); ##################################################### //bar graph function file ##################################################### function barGraph($value1,$value2,$value3) { //Create a new image $image = imagecreate(400,82); //Set the colours of the image parts $background = ImageColorAllocate($image,255,255,255); $border = ImageColorAllocate($image,0,0,0); $fill = ImageColorAllocate($image,43,82,0); //create the background of the bars ImageFilledRectangle($image,0,0,302,20,$background); ImageFilledRectangle($image,0,30,302,50,$background); ImageFilledRectangle($image,0,60,302,80,$background); //create the bars themselves ImageFilledRectangle($image,1,1,$value1,19,$fill); ImageFilledRectangle($image,1,31,$value2,49,$fill); ImageFilledRectangle($image,1,61,$value3,79,$fill); //Create the Borders ImageRectangle($image,0,0,300,20,$border); ImageRectangle($image,0,30,300,50,$border); ImageRectangle($image,0,60,300,80,$border); //add labels to the items ImageString($image,5 , 310, 0 ,$_GET['aTitle'],$border); ImageString($image,5 , 310, 30,$_GET['bTitle'], $border); ImageString($image,5 , 310, 60,$_GET['cTitle'], $border); //convert this page into a PNG image imagePNG($image); //Delete the image from menory imagedestroy($image); } //call the function and pass it it's values barGraph($_GET['a'],$_GET['b'],$_GET['c']); ?>
THE END RESULT: