Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Contatti BASI DI DATI ! ! http://www.diee.unica.it/~giacinto/BD Esercitazione su PHP & MySQL Docente: Giorgio Giacinto A.A. 2009/2010 Roberto Tronci ! e-mail: [email protected] Luca Piras ! e-mail: [email protected] Tel. 070 675 5776 Cos’è il PHP Cos’è il PHP • A metà degli anni novanta il Web era costituito per la maggior parte da documenti statici (HTML “puro”) • Con l’evoluzione di Internet si sentiva la necessità di rendere dinamici i contenuti (ad esempio estraendoli da un DB in base alle richieste dell’utente) • Il PHP nasce nel 1994 ad opera di Rasmus Lerdorf come una serie di macro che facilitava la gestione delle pagine personali • Grazie alla licenza di tipo Open-Source, presto nacque una ricca comunità di sviluppatori che portarono alla nascita del PHP3 • L’integrazione di PHP come modulo di Apache e la facilità di interfacciamento con il motore di MySQL lo portarono al successo • Oggi PHP è arrivato alla versione 5 e rappresenta uno dei linguaggi di scripting lato server più utilizzati al mondo Come funziona? Installazione… Non è banale installare un web server Apache e diventa più difficile se si vuole aggiungere MySQL e PHP. XAMPP è una distribuzione Apache facile da installare contenente MySQL e PHP (anche Perl). Per il momento ci sono quattro distribuzioni XAMPP: •XAMPP per Linux •XAMPP per Windows •XAMPP per Mac OS X •XAMPP per Solaris Sono tutte scaricabili gratuitamente dal sito: http://www.apachefriends.org/it/xampp.html Funziona? Funziona? • Apache… • Aprire un browser • Puntare su http://127.0.0.1/xampp (localhost) • La risposta di default è una pagina di presentazione • Apache +PHP… • Creare un file “info.php” nella cartella “htdocs” dentro la cartella xampp • “info.php” deve contenere la stringa: <?php phpinfo() ?> • Puntare con il browser http://127.0.0.1/info.php • Il risultato dovrebbe essere una serie di informazioni sul motore PHP e su Apache • Apache +PHP+MySQL… • Creare un database di test dalla pagina http://127.0.0.1/xampp “clickando” dal menù sulla sinistra la voce Strumenti->phpMyAdmin Info generali e “tag”… Info generali e “tag”… • Un file.html deve avere dei tag di formattazione e questi DEVONO essere sempre aperti e CHIUSI • <HTML>…</HTML> aprono e chiudono un file.html • I tag possono avere degli attributi per il testo scritto al loro interno • <p align=“right”>…</p> indicano un paragrafo • Il tag più utilizzato nella “comunicazione” tra pagine Web è il <form> che permette la raccolta dei dati dell’utente: <form name=“ricerca” action=“sql.php” method=“post”> … </form> • E’ importante indentare i tag annidati <table border=“0”> genera una tabella senza bordi visibili <tr> separa le righe <td>…</td> separa le colonne </tr> </table> • name=“” indica il nome del form • action=“” indica l’URL della pagina di risposta che processerà i dati • method=“” indica il metodo di invio che può essere o “post” o “get” Info generali e “tag”… PHP • Per raccogliere i dati c’è bisogno che nella pagina compaiano dei campi; il tag per fare questo è <input> che è senza chiusura. Ci sono vari tipi di campo: • <input type=“text” name=“box” value=“”> • <input type=“submit” value=“Submit”> • La funzione fondamentale del PHP è quella di produrre codice HTML • type=“” indica il tipo: pulsante, testo, radio-button • name=“” indica il nome • value=“” indica quello che comparirà sull’elemento <?php Tag di apertura print(“Buongiorno a tutti!<br/>”); echo “La data di oggi è: <b>”; echo date(“F j, Y g:i a”);//stampa la data commento echo “</b>”; ?> Tag di chiusura • In PHP non è necessario dichiarare le varabili prima dell’utilizzo. Il nome deve essere preceduto dal simbolo “$”. $nomevariabile=“stringa”; PHP+MySQL PHP+MySQL Per prima cosa vediamo come fa PHP a connetersi al server MySQL. Allo scopo occorre la funzione mysql_connect() che si utilizza con la seguente sintassi: •mysql_connect(server, utente, password); Una volta stabilita la connessione è necessario selezionare uno specifico db sul quale lavorare. A questo scopo PHP ci fornisce la funzione mysql_select_db() da utilizzarsi con la seguente sintassi: •mysql_select_db(database, connessione); E’ bene segnalare il caso in cui ci sia un errore nella connessione, quindi bisognerà aggiungere l’istruzione: •or die(“Errore nella connessione”); in questo caso non andrà messo il punto e virgola dopo la prima istruzione Anche in questo caso è bene segnalare il caso in cui ci sia un errore nella selezione del DB, quindi bisognerà aggiungere l’istruzione: •or die(“Errore nella selezione del database”); Anche in questo caso non andrà messo il punto e virgola dopo la prima istruzione PHP+MySQL PHP+MySQL Vediamo ora com’è possibile recuperare dei dati presenti nel nostro DB. Per fare questo dobbiamo formulare ed eseguire una query. Per fare ciò si fa ricorso alla funzione mysql_query() con la seguente sintassi: •mysql_query(query, connessione); • La funzione mysql_query() restituisce FALSE se la query non è stata eseguita correttamente, se non è lecita o se non si hanno i permessi per accedere ad una certa tabella. • Se la query è andata a buon fine può restituire TRUE in caso di un’istruzione di INSERT oppure il risultato della SELECT come un insieme di righe. • Per poterle contare si può usare la funzione mysql_num_rows(), mentre per poterle memorizzare in un array si usa mysql_fetch_array(). • Questa funzione restituisce un array che corrisponde alla riga caricata o FALSE se non ci sono più righe. •mysql_close(); chiude l’ultima connessione aperta con il server Esempio: $query = “SELECT * FROM studenti”; $result = mysql_query($query, $myconn) or die(“Errore…”); Esercizio 1 Esercizio 2 Dopo aver creato un database “prova” con una tabella “studenti” che abbia due campi: nome e cognome creiamo un form per l’inserimento di questi dati nel file insert.html <form name="Inserisci" action="sqlInsert.php" method="post"> Nome<br> <input type="text" name="nome" value=""> <br> Cognome<br> <input type="text" name="cognome" value=""> <br> <input type="submit" value="Submit"> </form> Esercizio 2 (2) … if($db == FALSE) die(“Errore nella connessione”); mysql_select_db($db_name, $db) or die(“Errore nella selezione del database”); $query = “INSERT INTO studenti VALUES (‘’,‘$nome’,‘$cognome’)”; mysql_query($query) or die(“Query non valida: ” .mysql_error()); mysql_close(); print(“L'utente <b>$nome $cognome</b> è stato inserito correttamente”); ?> <form action=insert.html> <input type=“submit” value=“indietro”> </form> (1) Creiamo ora il file sqlInsert.php che memorizzi i dati passatigli dal form nel database “prova” <?php $nome = $_POST[‘nome’]; $cognome = $_POST[‘cognome’]; // parametri del database $db_host = “localhost”; $db_user = “root”; $db_password = “”; $db_name = “prova”; $db = mysql_connect($db_host, $db_user, $db_password); … Esercizio 3 (1) Creiamo ora un form per poter eseguire un’interrogazione al DB nel file index.html <form name=”Ricerca" action="sql.php” method="post"> Cognome<br> <input type="text" name=”box" value=""> <br> <input type="submit" value="Submit"> </form> Esercizio 4 (1) Creiamo infine il file sql.php per interrogare il DB e stampare il risultato della query <?php $boxname = $_POST[‘box’]; // parametri del database $db_host = “localhost”; $db_user = “root”; $db_password = “”; $db_name = “prova”; $db = mysql_connect($db_host, $db_user, $db_password); … Esercizio 4 (2) … if($db == FALSE) die(“Errore nella connessione”); mysql_select_db($db_name, $db) or die(“Errore nella selezione del database”); $query = “SELECT * FROM studenti WHERE cognome = \“$boxname\””; $result = mysql_query($query) or die(“Query non valida: ” .mysql_error()); while($row = mysql_fetch_array($result)){ echo $row[‘nome’].‘ ’ .$row[‘cognome’].‘<br/>’;} mysql_close(); ?> <form action=index.html> <input type=“submit” value=“indietro”> </form>