0% found this document useful (0 votes)
146 views

Dynamic Graphs Creation

The document discusses using PHP, MySQL, and JpGraph to dynamically create graphs from data stored in a database. It provides an example of connecting to a MySQL database to retrieve data and load it into arrays for the x and y axes. Graph properties like the title, scale, and colors are then set before creating and outputting a bar graph to the page. Additional resources for these technologies are also listed.

Uploaded by

Iera Syahira
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
146 views

Dynamic Graphs Creation

The document discusses using PHP, MySQL, and JpGraph to dynamically create graphs from data stored in a database. It provides an example of connecting to a MySQL database to retrieve data and load it into arrays for the x and y axes. Graph properties like the title, scale, and colors are then set before creating and outputting a bar graph to the page. Additional resources for these technologies are also listed.

Uploaded by

Iera Syahira
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 15

Using PHP, MySQL and JpGraph to Create Dynamic Graphs

By: Geoffrey Rowland ([email protected])

Why Dynamic?
Less

time spent to implement dynamic graphs than to manually create a new graph everytime you need one Never use PowerPoint / Excel to create graphs again! (okay maybe not) Useful for data that changes often

Required Software
PHP

4.02 and above Compiled with GD Library Jpgraph 1.63 graph class library MySQL (or database to your liking)

GD Graphics Library
GD

allows the ability to use code to quickly draw images complete with lines, arcs, text, multiple colors, and write out the result as a PNG, JPEG, or WBMP file. Does not support GIF due to patent issues.

Jpgraph Graph Class Library


Object

oriented graph library for PHP Allows creation of bar, line, and plot graphs Also allows creation of pie charts Database independent QPL 1.0 license

Example Input for Graph Creation

<html> <body> <? //make sure default image format is jpeg, not png DEFINE("DEFAULT_GFORMAT","jpeg"); // include jpgraph graphing libs.. include ("jpgraph/jpgraph.php"); include ("jpgraph/jpgraph_line.php"); include ("jpgraph/jpgraph_bar.php"); //include db connection details include("/home/em-dat/dbconnect/dbconnect.php"); // connect PHP to MySQL $linkID=MYSQL_CONNECT($hostname,$username,$password) or die("Unable to connect to database"); mysql_select_db("$dbName", $linkID) or die("Unable to select database");

Include Graphing Libraries and Setup Database Connection

// query to select our information for the x and y axis for the bar graph $query4 = "select year,sum($number) AS summedTotal FROM emdat WHERE DisType = '$DisType' AND country = '$country' AND year between '1975' and '2001' group by year order by year"; // execute the query $result4 = mysql_query($query4,$linkID);

Load Data from Database into X and Y axis Array


$readnext = TRUE; // use $year value if there is no value for that year in the database for ($year=1975; $year < 2002; $year++) { if ($readnext) $row = mysql_fetch_row($result4); if ($year==$row[0]) { // if there is data for that year, load the year and assoc. data into the array. // xaxis array $databarx[]=$row[0]; // yaxis array $databary[] = $row[1]; $readnext=TRUE; } else { // if there isn't data for that year, load the year into the array, but load a 0 value for that year. // xaxis array $databarx[] = $year; // yaxis array $databary[] = "0"; $readnext=FALSE; } }

Set Graph Properties


$graph->img->Image(640,480,"jpeg"); $graph->SetColor("$color_background"); $graph->SetShadow(); // Use text X-scale so we can text labels on the X-axis $graph->SetScale("textlin"); // Color the two Y-axis to make them easier to associate // to the corresponding plot (we keep the axis black though) $graph->yaxis->SetColor("black","black");

// Set title and subtitle $graph->title->Set("Number $number during $DisType in $country between 1975 and 2000"); // Make the margin around the plot a little bit bigger than default $graph->img->SetMargin(70,140,70,80);

Create the Bar Graph


// Setup the labels $graph->xaxis->SetTickLabels($databarx); $graph->xaxis->SetTextLabelInterval(5); $graph->xaxis->SetTextTickInterval(1); // Create the bar graph $bar1 = new BarPlot($databary); // set the title of the legend and the color of the bars $bar1->SetLegend("Number $number"); $bar1->SetFillColor("$color_bar"); // set width of bars on bar graph $bar1->SetAbsWidth($barwidth); //show value on top of bar $bar1->value->Show(true); // set format of values displayed, %d prints no decimal places $bar1->value->SetFormat("%d");

Output Bar Graph to Screen


$graph->Add($bar1); // Finally output the image // write the image to disk, and call it dynamic-bar.jpg $graph->Stroke("dynamic-bar.jpg"); // Calculates the MD5 hash of server timestamp and returns that hash to $cachekiller. // The hash is a 32-character hexadecimal number. $cachekiller = md5(time()); // output the print icon echo "<a href=\"javascript:window.print()\"><font color=\"#FFFFFF\">..<img src=\"http://www.emdat.net/pagepics/printicon.gif\" width=\"16\" height=\"14\" border=\"0\" alt=\"Print this page.\"></font></a><br>"; // output the graph to the screen with cachekiller number that makes the browser refresh the image echo "<img src=\"dynamic-bar.jpg?cachekiller=$cachekiller\">"; ?>

Example Output Bar Graph

Example Graphs

Additional Information
Climate

Information Project http://www.cip.ogp.noaa.gov JpGraph http://www.aditus.nu/jpgraph/ PHP http://www.php.net MySQL http://www.mysql.com GD Graphics Library http://www.boutell.com/gd/

Contact Information
Feel

free to contact me with any questions! [email protected]

You might also like