Qualche mese fa avevamo introdotto il disegno di semplici forme, in particolare avevamo visto un cerchio, utilizzando le librerie grafiche GD di PHP, in questo nuovo articolo vedremo come sfruttare queste conoscenze per realizzare un semplice grafico dinamico prelevando i dati da una tabella MySQL.
Innanzitutto dobbiamo creare il database che andrà ad ospitare i nostri dati, una tabella molto semplice con i punti del grafico, possiamo inserire un campo x ed un campo y di tipo intero. Ora non ci resta che preparare il form per far inserire i dati al nostro utilizzatore, dobbiamo anche porre dei limiti, diciamo 400 punti in ascissa ed altrettanto in ordinata.
<?php // Raccolgo i dati $sX = $_REQUEST['x']; $sY = $_REQUEST['y']; $nError = 0; if (strlen($sX) > 0 && strlen($sY) > 0) { if ($sX >= 0 && $sY >= 0) { if ($sX <= 400 && $sY <= 400) { // Apro la connessione alla tabella punti nel database grafico ed inserisco i valori $my_server = mysql_connect("localhost", "root", "") or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db("grafico", $my_server); $query = "INSERT INTO punti (x, y) VALUES($sX, $sY)"; mysql_query($query, $my_server) or die(mysql_error()); mysql_close($my_server); } else $nError = 2; } else $nError = 1; } ?> <html> <head><title>Un Grafico Dinamico</title></head> <body bgcolor="#C0C0C0"> <h1 align="center" style="color:#444444;font-family:trebuchet,Tahoma, Verdana;font-size:14px;font-weight:bold"> Un Grafico Dinamico con le Librerie GD </h1> <?php if ($nError > 0) echo '<p align="center" style="color:#E70000;font-family:trebuchet, Tahoma,Verdana;font-size:14px;font-weight:normal">'; switch ($nError) { case 1: echo 'I valori dei punti devono essere superiori a zero!'; break; case 2: echo 'I valori dei punti devono essere inferiori a 400!'; break; } if ($nError > 0) echo '</p>'; ?> <div align="center"><img src="piano.php"></div> <br> <form action="#" method="POST" name="punti"> <table width="800" border="0" align="center" cellpadding="0" cellspacing="0" style="border: 1px solid #666666"> <tr> <td width="400" height="100" align="center" valign="middle"> <label>Inserire l'ascissa: <input type="text" name="x" value="0" title="Inserire l'ascissa del punto"> </td> <td width="400" height="100" align="center" valign="middle"> <label>Inserire l'ordinata: <input type="text" name="y" value="0" title="Inserire l'ordinata del punto"> </td> </tr> <tr> <td height="100" colspan="2" align="center" valign="middle"> <input type="submit" name="invia" title="Click qui per inviare i valori" value="Memorizza"> </td> </tr> </table> </form> </body> </html>
Questo sopra è il codice della pagina che richiama l’immagine GD, si nota come all’inizio prendo i dati delle variabili e quando ho più di un punto comincio a disegnare le rette, come è possibile evincere dal codice della pagina del disegno.
<?php // Apro la connessione dati per prelevare i dati $my_server = mysql_connect("localhost", "root", "") or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db("grafico", $my_server); $query = "SELECT * FROM punti"; $my_punti = mysql_query($query, $my_server) or die(mysql_error()); $row_punti = mysql_fetch_assoc($my_punti); $num_punti = mysql_num_rows($my_punti); // Preparo per il disegno $img = imagecreate(400, 400); $clr_sfondo = imagecolorallocate($img, 192, 192, 192); imagefill($img, 0, 0, $clr_sfondo); $clr_linea = imagecolorallocate($img, 0, 0, 0); // Disegno i punti e li collego for ($i = 1; $i < $num_punti; $i++) { $x0 = $row_punti['x']; $y0 = $row_punti['y']; $row_punti = mysql_fetch_assoc($my_punti); $x = $row_punti['x']; $y = $row_punti['y']; imageline($img, $x0, $y0, $x, $y, $clr_linea); } mysql_free_result($my_punti); mysql_close($my_server); imagepng($img); imagedestroy($img); ?>
Questo sopra è il codice della pagina che ho chiamato “piano.php” che è quella che disegna l’immagine con le librerie GD. Se avete seguito i miei articoli passati potrete notare come sia semplice creare dei grafici dinamici in PHP. Da ora potrete esercitarvi ed anche sbizzarrirvi con la creazione di disegni che provengono da dati che risiedono su un database MySQL. Come sempre io vi fornisco i mattoni e poi voi con curiosità e voglia di sperimentare fate il resto.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→