lamanita 0 Denunciar post Postado Setembro 5, 2003 Alguém aí sabe como é o funcionamento do PHP para gerar gráficos ?Valeu galera... Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Setembro 5, 2003 PHP possui uma biblioteca chamada GD olhe no manual, http://br.php.net no zend.com tem uns exemplos em "tips" Compartilhar este post Link para o post Compartilhar em outros sites
reinaldo.rmo 0 Denunciar post Postado Setembro 5, 2003 Este exemplo é muito bom pra quem precisa entender como gerar graficos no php. É de um livro que tenho. Espero que te ajude. Reinaldo ----------------------------------------------------------------------------- pollsetup.sql - configura o banco de dados poll create database poll; use poll; create table poll_results ( candidate varchar(30), num_votes int ); insert into poll_results values ('John Smith', 0), ('Mary Jones', 0), ('Fred Bloggs', 0) ; grant all privileges on poll.* to poll@localhost identified by 'poll'; ------------------------------------------------------------------------- vote.html - onde os usuarios podem votar <html> <head> <title>Polling</title> <head> <body> <h1>Pop Poll</h1> <p>Who will you vote for in the election?</p> <form method="post" action="show_poll.php"> <input type="radio" name="vote" value="John Smith">John Smith<br /> <input type="radio" name="vote" value="Mary Jones">Mary Jones<br /> <input type="radio" name="vote" value="Fred Bloggs">Fred Bloggs<br /><br /> <input type="submit" value="Show results"> </form> </body> --------------------------------------------------------------------- show_poll.php - arquivo responsavel por gerar o grafico <?php /******************************************* Database query to get poll info *******************************************/ // get vote from form $vote=$HTTP_POST_VARS['vote']; // log in to database if (!$db_conn = @mysql_connect('localhost', 'poll', 'poll')) { echo 'Could not connect to db<br />'; exit; }; @mysql_select_db('poll'); if (!empty($vote)) // if they filled the form out, add their vote { $vote = addslashes($vote); $query = "update poll_results set num_votes = num_votes + 1 where candidate = '$vote'"; if(!($result = @mysql_query($query, $db_conn))) { echo 'Could not connect to db<br />'; exit; } }; // get current results of poll, regardless of whether they voted $query = 'select * from poll_results'; if(!($result = @mysql_query($query, $db_conn))) { echo 'Could not connect to db<br />'; exit; } $num_candidates = mysql_num_rows($result); // calculate total number of votes so far $total_votes=0; while ($row = mysql_fetch_object ($result)) { $total_votes += $row->num_votes; } mysql_data_seek($result, 0); // reset result pointer /******************************************* Initial calculations for graph *******************************************/ // set up constants putenv('GDFONTPATH=C:\WINNT\Fonts'); $width=500; // width of image in pixels - this will fit in 640x480 $left_margin = 50; // space to leave on left of image $right_margin= 50; // ditto right $bar_height = 40; $bar_spacing = $bar_height/2; $font = 'arial'; $title_size= 16; // point $main_size= 12; // point $small_size= 12; // point $text_indent = 10; // position for text labels on left // set up initial point to draw from $x = $left_margin + 60; // place to draw baseline of the graph $y = 50; // ditto $bar_unit = ($width-($x+$right_margin)) / 100; // one "point" on the graph // calculate height of graph - bars plus gaps plus some margin $height = $num_candidates * ($bar_height + $bar_spacing) + 50; /******************************************* Set up base image *******************************************/ // create a blank canvas $im = imagecreate($width,$height); // Allocate colors $white=ImageColorAllocate($im,255,255,255); $blue=ImageColorAllocate($im,0,64,128); $black=ImageColorAllocate($im,0,0,0); $pink = ImageColorAllocate($im,255,78,243); $text_color = $black; $percent_color = $black; $bg_color = $white; $line_color = $black; $bar_color = $blue; $number_color = $pink; // Create "canvas" to draw on ImageFilledRectangle($im,0,0,$width,$height,$bg_color); // Draw outline around canvas ImageRectangle($im,0,0,$width-1,$height-1,$line_color); // Add title $title = 'Poll Results'; $title_dimensions = ImageTTFBBox($title_size, 0, $font, $title); $title_length = $title_dimensions[2] - $title_dimensions[0]; $title_height = abs($title_dimensions[7] - $title_dimensions[1]); $title_above_line = abs($title_dimensions[7]); $title_x = ($width-$title_length)/2; // center it in x $title_y = ($y - $title_height)/2 + $title_above_line; // center in y gap ImageTTFText($im, $title_size, 0, $title_x, $title_y, $text_color, $font, $title); // Draw a base line from a little above first bar location // to a little below last ImageLine($im, $x, $y-5, $x, $height-15, $line_color); /******************************************* Draw data into graph *******************************************/ // Get each line of db data and draw corresponding bars while ($row = mysql_fetch_object ($result)) { if ($total_votes > 0) $percent = intval(round(($row->num_votes/$total_votes)*100)); else $percent = 0; // display percent for this value ImageTTFText($im, $main_size, 0, $width-30, $y+($bar_height/2), $percent_color, $font, $percent.'%'); if ($total_votes > 0) $right_value = intval(round(($row->num_votes/$total_votes)*100)); else $right_value = 0; // length of bar for this value $bar_length = $x + ($right_value * $bar_unit); // draw bar for this value ImageFilledRectangle($im, $x, $y-2, $bar_length, $y+$bar_height, $bar_color); // draw title for this value ImageTTFText($im, $main_size, 0, $text_indent, $y+($bar_height/2), $text_color, $font, "$row->candidate"); // draw outline showing 100% ImageRectangle($im, $bar_length+1, $y-2, ($x+(100*$bar_unit)), $y+$bar_height, $line_color); // display numbers ImageTTFText($im, $small_size, 0, $x+(100*$bar_unit)-50, $y+($bar_height/2), $number_color, $font, $row->num_votes.'/'.$total_votes); // move down to next bar $y=$y+($bar_height+$bar_spacing); } /******************************************* Display image *******************************************/ Header('Content-type: image/png'); ImagePng($im); /******************************************* Clean up *******************************************/ ImageDestroy($im); ?> Compartilhar este post Link para o post Compartilhar em outros sites