Dati in rete Appunti 1 L’accesso ai database SQL in PHP • PHP estende le funzionalità di un Web server, mentre SQL è un programma server che si occupa della gestione di basi di dati. • In un sito web i dati risiedono in un database sul server gestito da MySQL e, ogni volta che un utente ne fa richiesta, questi dati vengono recuperati e mostrati nelle pagine web realizzate sul server tramite i tag del linguaggio HTML e inviate al browser sul client. 2 Interazione client-server • Le due parti dell’applicazione WEB , lato client e lato server, si collegano usando gli script in linguaggio PHP che svolgono i seguenti compiti: 3 Connessione al DB e scrittura risposta in formato HTML • Connessione al database MySQL, invio dei comandi SQL e acquisizione delle risposte (fasi 2,3 e 4) • Scrittura dei dati ricevuti dal database all’interno di pagine Web in formato HTML, in modo che siano interpretate dal browser (fasi 5 e 6) 4 Dettaglio fasi: richieste 1. Il browser Web effettua una richiesta di una pagina in formato PHP (fase 1) 2. Il server Web individua il file .php e attiva l’interprete PHP per eseguirlo (fase 2) 3. Lo script PHP contiene in comandi SQL per collegarsi al database MySQL e invia le richieste con comandi SQL (fase 3) 5 Dettaglio fasi: risposte 1. Il server MySQL risponde restituendo i dati richiesti (fase 4) 2. Lo script PHP scrive questi dati in una pagina Web e la restituisce al Web server (fase 5) 3. Il server Web invia all’utente la pagina richiesta in formato HTML (fase 6) 6 Connessione al DB • Per collegarsi al database lo script PHP deve eseguire il comando mysql_connect • La sintassi completa è mysql_connect($host, $username, $password); – $host rappresenta l’indirizzo IP o il nome del server su cui è in esecuzione MySQL – $username è il nome dell’utente – $passsword è la password dell’utente • La funzione restituisce un oggetto $conn nel caso in cui la connessione abbia successo 7 Connessione al server MySQL $conn=mysql_connect($host, $username, $password); if (!$conn) { die(‘Errore durante la connessione: ‘ . mysql_error()); } echo (‘Connessione effettuata con successo’); • Per chiudere una connessione si esegue il comando mysql_close($conn); 8 Connessione al database MySQL • Sintassi mysql_select_db(nomedatabase, connessione); • Esempio $accesso=mysql_select_db($db_nome, $conn); if (!$accesso) { die(‘Accesso al database non riuscito: ‘ . mysql_error()); } 9 Esempio completo di connessione <? php $host = ‘nome server‘; $username = ‘mario_rossi‘; $password = ‘abcd1999‘; $db_nome = ‘negozio_online‘; $tab_nome = ‘clienti‘; $conn=mysql_connect($host, $username, $password); if (!$conn) { die(‘Errore durante la connessione: ‘ . mysql_error()); } $accesso=mysql_select_db($db_nome, $conn); if (!$accesso) { die(‘Accesso al database non riuscito: ‘ . mysql_error()); } //lettura dei dati dalla tabella :::: ?> 10 Selezione di dati • Dopo avere aperto la connessione, si possono eseguire comandi SQL $sql="SELECT * FROM $tab_nome"; $result = mysql_query($sql); • Per recuperare le singole righe della selezione si esegue il comando fetch_array $row = mysql_fetch_array($result); • Il valore di ritorno della funzione fetch_array è un array associativo in cui ogni elemento corrisponde ad un campo del record 11 Iterazione sui dati • Dopo avere recuperato i dati, per esaminare le righe si utilizza una struttura di ripetizione while come la seguente while($row = mysql_fetch_array($result)) { // operazioni sulla riga }; 12 Pagina PHP (leggitabella.php) <? php $host = ‘nome server‘; $username = ‘mario_rossi‘; $password = ‘abcd1999‘; $db_nome = ‘negozio_online‘; $tab_nome = ‘clienti‘; $conn=mysql_connect($host, $username, $password); if (!$conn) die(‘Errore durante la connessione: ‘ . mysql_error()); $accesso=mysql_select_db($db_nome, $conn); if (!$accesso) die(‘Accesso al database non riuscito: ‘ . mysql_error()); //lettura dei dati dalla tabella $sql="SELECT * FROM $tab_nome"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { // operazioni sulla riga echo $row["Cognome"] . " " . $row["Nome"] . " " . $row["Citta'"]; echo "<br />"; }; 13 ?>