LA CONNESSIONE AI DATABASE MYSQL TRAMITE SCRIPT PHP VERSIONE 5.5

LA CONNESSIONE AI DATABASE MYSQL TRAMITE SCRIPT PHP VERSIONE 5.5

1 La connessione ai database MySQL tramite script PHP versione 5.5 Php è un linguaggio di scripting che estende le funzionalità del server Web, mentre MySQL è un programma server che si occupa della gestione di basi di dati. In un sito Web dinamico il contenuto della pagine risiede in un database e ogni volta che un utente ne fa richiesta, questo contenuto viene recuperato e mostrato tramite le pagine Web realizzate con il linguaggio HTML. Dal lato browser le informazioni devono essere presentate tramite i marcatori del linguaggio HTML, mentre dal lato server le stesse informazioni sono contenute in un database gestito da MySQL.

Le due parti si collegano usando gli script in linguaggio Php che svolgono i seguenti compiti:  Si collegano al database MySQL, inviano i comandi SQL e ricevono le risposte,  Aggiungono i dati ricevuti dal database all’interno di pagine Web in formato HTML, in modo che siano interpretate dal browser dell’utente.

La prima operazione effettuata dallo script Php è la connessione al server MySQL. In questo caso si utilizzano le funzioni incluse nel linguaggio Php e dedicate alla gestione delle operazioni con il server MySQL. La funzione mysql_connect apre una connessione con il server MySQL: mysql_connect(,,); la funzione riceve tre parametri testuali:  Hostname rappresenta l’indirizzo IP o il nome del server su cui è in esecuzione il server MySQL; se è lo stesso server su cui è in esecuzione il server Web, si indica con localhost,  Username è il nome dell’utente che ha i permessi per accedere al database,  Password è la password dell’utente.

La funzione restituisce un valore che corrisponde all’identificativo della connessione nel caso in cui la connessione ha avuto successo. Se non è stata in grado di aprire la connessione viene restituito un valore falso, che viene utilizzato per interrompere l’esecuzione e mostrare un messaggio d’errore all’utente. Esempio di script per aprire una connessione al server MySQL e successivamente chiuderla tramite la funzione mysql_close.

2 // chiusura della connessione mysql_close($conn); ?> Dopo aver aperto al connessione con il server MySQL si può operare con i database.

Se il database che si intende utilizzare è già stato creato, per esempio dall’amministratore, prima di poterlo utilizzare deve essere selezionato. Per creare un nuovo database si usa la funzione mysql_create_db che riceve come parametro il nome del database. mysql_create_db(“Articoli”); Dopo che il database Articoli è stato creato, per poterlo utilizzare deve essere selezionato tramite la funzione mysql_select_db. In questo modo tutti i successivi comandi SQL fanno riferimento al database selezionato. La funzione specifica come parametro il nome del database che deve essere attivato.

mysql_select_db(“Articoli”); Questa funzione restitutisce un valore di verità che permette di controllare se l’operazione ha avuto successo oppure è terminata con errore. Una volta aperta la connessione con il server MySQL e selezionato il database, è possibile interagire con il database tramite i comandi SQL. La funzione di php che permette di inviare comandi SQL al server MySQL è mysql_query. Questa funzione riceve come parametro la stringa contenente il comando SQL che deve essere eseguito.

La manipolazione dei dati Se prendiamo come esempio un database di nome Articoli, contenente la tabella Telefoni con i dati di vari modelli di telefoni cellulari.

La tabella è composta dai seguenti campi: Nome Tipo Dimensione id intero marca testo 20 modello testo 20 Il campo id è univoco e rappresenta la chiave primaria. E’ formato da un numero intero che viene incrementato automaticamente. Testo del problema Creare all’interno del database Articoli la tabella Telefoni

3 } //Selezione del database “Articoli” mysql_select_db(“Articoli”); //creazione della tabella “Telefoni” $create=”CREATE TABLE Telefoni ( “; $create.=” id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, “; $create.=”marca VARCHAR(20), “; $create.=”modello VARCHAR(20), “; $create.=”prezzo DOUBLE “; if (!mysql_query($create)) { echo (“Errore nella creazione della tabella”); exit(); } Echo(“Tabella creata correttamente”); mysql_close($conn); ?> Per aggiungere i dati alla tabella si deve utilizzare il comando SQL INSERT, specificando i valori da assegnare ad ogni campo. Il seguente esempio mostra come è possibile implementare questa operazione.

Testo del problema Inserire un nuovo telefono nella tabella dei telefoni. Script

4 $prezzo=”174.60”; //Comando SQL $insert=” INSERT INTO telefoni (marca, modello, prezzo) “; $insert.=” VALUES (‘$marca’,’$modello’,’$prezzo’)”; if (!mysql_query($insert)) { echo(“Errore nel comando INSERT”); exit(); } echo(“Telefono aggiunto correttamente.”); mysql_close($conn); ?> Il campo id non viene indicato nel comando insert perché viene incrementato automaticamente. E’ possibile eseguire un inserimento di un nuovo record senza specificare tutti i campi della tabella: i campi che non vengono indicati assumono un valore di dafault.

Nell’esempio precedente i dati del nuovo record sono inclusi direttamente nello script. Solitamente è l’utente che inserisce tramite un modulo della pagina web i dati che devono essere aggiunti al database. Per ottenere questa funzionalità si deve costruire una pagina web contenente un modulo con le seguenti caratteristiche:  Deve contenere le caselle di testo per i valori che l’utente deve inserire,  Deve richiamare lo script Php che si occupa dell’aggiornamento del database. Testo del problema Costruire una pagina Web che consente l’inserimento di un nuovo telefono nella tabella dei telefoni.

Pagina Web (insert.html) INSERIMENTO DI UN NUOVO TELEFONO: Marca: Modello: Prezzo:

5 SCRITP (insert.php) // Apre la connessione con il server MySQL $conn=mysql_connect(“localhost”,”root ) ; if (!$conn) { echo (“Errore durante la connessone a MySQL”); exit(); } //Selezione del database “Articoli” mysql_select_db(“Articoli”); //Comando SQL $insert=” INSERT INTO telefoni (marca, modello, prezzo) “; $insert.=” VALUES (‘$marca’,’$modello’,’$prezzo’)”; if (!mysql_query($insert)) { echo(“Errore nel comando INSERT”); exit(); } echo(“Telefono aggiunto correttamente.”); mysql_close($conn); ?> Altro inserimento Le operazioni di cancellazione (Delete) e di aggiornamento (Update) sono eseguite allo stesso modo dell’operazione di inserimento.

I frammenti di codice che impostano ed eseguono la cancellazione e l’aggiornamento sono i seguenti: //Cancellazione $delete=”DELETE FROM Telefoni ”; $delete.=”WHERE id=’3’;

6 if (!mysql_query($delete)) { echo(“Errore nel comando Delete”); exit(); } // Aggiornamento $update=”UPDATE Telefoni “; $update.=”SET modello =’a145’, “; $update.=”prezzo =’125.00’, “; $update.=”WHERE id =’2’, “; if (!mysql_query($update)) { echo(“Errore nel comando Update”); exit(); } Le interrogazioni al database Per le operazioni di aggiornamento e modifica delle tabelle del database, la funzione mysql_query restituisce un valore di verità vero se l’operazione ha avuto successo oppure falso se è terminata con errore. Per le interrogazioni eseguite tramite il comando SELECT, non basta sapere se l’operazione ha avuto successo: serve anche un modo per gestire i dati che vengono restituiti.

Tramite un’interrogazione vengono recuperate le informazioni dal database che devono essere utilizzate per fare dei controlli oppure per essere mostrate all’utente. In questo secondo caso, per presentare i risultati in modo ordinato, è opportuno generare dinamicamente una pagina Web organizzando i dati all’interno delle celle di una tabella HTML. Se si esegue un’interrogazione, il valore di ritorno della funzione mysql_query è un identificativo che fa riferimento alla lista delle righe restituite dal server MySQL. Questo identificativo deve essere memorizzato in una variabile e viene utilizzato per recuperare i dati dell’interrogazione.

La seguente interrogazione consente di ottenere tutti i record memorizzati nella tabella Telefoni. $risultato=mysql_query(“SELECT * FROM Telefoni”); Se il comando SQL genera un errore, la variabile $risultato assume un valore falso questo può essere utilizzato per mostrare un messaggio di errore e terminare l’esecuzione dello script. If (!risultato) { echo(“errore nel comando SELECT”); exit(); }

7 Se non si sono verificati errori, si utilizza l’identificativo restituito dalla funzione mysql_query per esaminare i risultati. La funzione mysql_fetch_array riceve come parametro la variabile $risultato e ritorna al riga successiva del risultato.

riga=mysql_fetch_array($risultato); Il valore di ritorno della funzione mysql_fetch_array è un array associativo che viene memorizzato nella variabile $riga: in essa ogni elemento corrisponde a un campo del record. Quando non ci sono più righe nel risultato, la funzione restituisce un valore falso. Per esaminare tutte le righe del risultato si utilizza una struttura while come la seguente: //Recupera la prima riga $riga=mysql_fetch_array($risultato); while ($riga) { /*operazione sulla riga*/ // Recupera la riga successiva $riga=mysql_fetch_array($risultato); } Testo del problema Visualizzare la marca, il modello e il prezzo dei telefoni che costano meno di 200 euro.

Script (select.php) Elenco dei telefoni

8 { echo(“Errore nel comando SELECT”); exit(); } //Recupera la prima riga $riga=mysql_fetch_array($risultato); if (!$riga) { echo(“Nessun telefono presente nel database”); exit(); } while ($riga) { // operazione sulla riga echo ) ; echo (“Marca=”.$riga[“marca ) ; echo (“Modello=”.$riga[“modello ) ; echo (“Prezzo=”.$riga[“prezzo ) ; echo ) ; //Recupera la riga successiva $riga=mysql_fetch_array($risultato); } mysql_close($conn); ?> Testo del problema Visualizzare in forma tabellare l’elenco dei telefoni di una marca inserita dall’utente tramite il modulo di una pagina web.

Vai alle pagine successive ... Annulla