Ecco giunti all'ultima tappa del percorso introduttivo su HTML, PHP e gestione di dati su MySQL:
L'accesso ai dati e la visualizzazione delle informazioni contenute nel database tramite pagine dinamiche scritte in PHP.
1. PHP e MYSQL
Lo so, adesso non vedete l'ora
di sviluppare una pagina WEB
che visualizza l'elenco dei libri
della biblioteca.
Stefano Floris, Realizzare programmi gestionali in ambiente
Versione fabbraio 2012a WEB con HTML e PHP
Pubblicato su
www.troppocurioso.altervista.org
2. Questa opera è sotto licenza
creativa (di tipo copyleft)
Attribuzione-Non commerciale-
Condividi allo stesso modo Generico.
Per vedere una copia del testo della licenza visita il sito
http://www.creativecommons.it/Licenze
Stefano Floris, 2011
www.troppocurioso.altervista.org
3. PHP e MYSQL
Prendete nota delle
funzioni PHP che
imparerete ad usare.
4. PHP e MYSQL
Prendete nota delle
funzioni PHP che
imparerete ad usare.
A proposito, sapete cosa
sono le funzioni?.
5. PHP e MYSQL
y=f(x)
Esatto, avete capito bene. Il
concetto è mutuato dalla
matematica.
6. PHP e MYSQL
y=f(x)
Esatto, avete capito bene. Il
concetto è mutuato dalla
matematica.
f è la funzione.
7. PHP e MYSQL
Piu' semplicemente vi dirò
che una funzione è quasi
come un comando.
8. PHP e MYSQL
Piu' semplicemente vi dirò
che una funzione è quasi
come un comando.
Voi, per esempio, se siete
arrivati fin qui conoscete
sicuramente i comandi echo, if,
for ecc. ecc.
9. PHP e MYSQL
Ecco, la funzione, rispetto al
comando produce un risultato che
viene generalmente salvato in
una variabile.
10. PHP e MYSQL
Ecco, la funzione, rispetto al
comando produce un risultato che
viene generalmente salvato in una
variabile.
Piu' precisamente si dice che
la funzione assume un
valore (che può essere
salvato in una variabile).
11. PHP e MYSQL
Ecco un comando e una
funzione a confronto. echo
è un comando, pow una
funzione.
// Comando:
Echo “benvenuto nel mio sito!”;
// Funzione:
$potenza = pow($valore,2);
12. Per accedere a
MYSQL e poterlo
interrogare, PHP e MYSQL
PHP mette a
// Per connettersi a MySQL
disposizione una
// mysqli_connect()
sequenza di
//
funzioni.
// Per aprire un database specifico
// mysqli_select_db()
Vi elenco qui le
piu' importanti. // Per lanciare un comando SQL
// mysqli_query()
Prendete nota:
// Per prendere i dati del record
// corrente e portarli in un
// vettore
// mysqli_fetch_array()
// Per liberare le memoria
// mysqli_free_resul()
// Per chiudere la connessione MySQL
// mysqli_close()
13. PHP e MYSQL
Vediamo adesso come poter usare
le funzioni elencate.
Le prenderemo in esame una per
volta in versione piu' semplificata
per noi.
Se desiderate vedere l'elenco
completo di comandi e funzioni
PHP e tutti i parametri che le
funzioni ricevono fate riferimento
al manuale on line.
http://it2.php.net/manual
14. PHP e MYSQL
Partiamo dalla
prima da usare
// Per connettersi a MySQL.
// mysqli_connect(<server>,<utente>,<password>,<nomedb>)
//
// La funzione riceve quattro parametri:
// <server> → l'indirizzo del server (p.e 172.16.0.24)
// <utente> → il nome dell'utente registrato su MySQL
// <password> → la password associata all'utente
// <nomedb> → il nome del database da usare
// La funzione restituisce:
// a) FALSE (valore di tipo boolean) se la cvonnessione
// non è avvenuta correttamente
// (server irraggiungibile, utente e
// password errati o altri problemi)
// b) un valore numerico univoco della connessione
15. PHP e MYSQL
...$db è la variabile che uso per
salvare il risultato della chiamata
alla funzione...
// *****************************************************
// Imposto le variabili che indicano i
// parametri del database
// *****************************************************
$db_host = "172.16.0.13"; // Server MySQL
$db_user = "baldassini"; // Nome utente
$db_password = "baldassini"; // Password
$db_name = "baldassini"; // Nome del database
// ****************************************************
// Connessione al motore DataBase usando le variabili
// impostate sopra
// e la funzione di php mysqli_connect()
//
*******************************************************
$db = mysqli_connect($db_host, $db_user, $db_password);
16. PHP e MYSQL
...$db è la variabile che uso per
salvare il risultato della chiamata
alla funzione...
// ******************************************************
// La variabile $db è utilizzata per verificare
// l'esito della connessione
// La funzione die interrompe la procedura
// ******************************************************
if ($db == FALSE)
{
die ("Errore nella connessione. Verificare i parametri
di accesso");
}
echo "connesione a MYSQL avvenuta <BR>";
17. PHP e MYSQL
Una volta stabilita la connessione è
necessario aprire il database scelto.
// Per connettersi a MySQL.
// mysqli_select_db(<idconnessione>,<nomedatabase>)
//
// La funzione riceve due parametri:
// <idconessione> → il codice della connessione
// ricevuto dalla funzione
// mysqli_connect
//
// <nomedatabase> → il nome del db da usare
//
// La funzione restituisce:
// a) FALSE (valore di tipo boolean) se l'apertura
// del db non è andata in porto
// b) TRUE (valore di tipo boolean) se l'apertura
// è andata in porto correttamente
18. PHP e MYSQL
In questo caso non salvo il valore della funzione (perché
non mi serve successivamente) e controllo l'esito
dell'operazione direttamente con la se.
// ******************************************************
// Mi collego al database che mi interessa
// con la funzione mysqli_select_db() che restituisce
// un valore boolean
// vero = connessione avvenuta
// falso = connessione con problemi
// ******************************************************
if ( mysqli_select_db($db, $db_name) == FALSE)
{
die ("Errore nella selezione del database. Verificare i
parametri");
}
echo "<BR>";
echo "fatta connessione db <BR>";
19. PHP e MYSQL
Notate il fatto che la variabile
$db, viene usata d'ora in poi
per tutte le chiamate alle altre
funzioni...
...
if ( mysqli_select_db($db, $db_name) == FALSE)
..
$db serve infatti ad
indicare quale
connessione al
DBMS utilizzare.
20. PHP e MYSQL
Adesso serve il comando SQL da inviare al DBMS. Scrivo
il comando come testo e lo salvo in una variabile (qui
chiamata $query)
// ******************************************************
// Desidero recuperare i dati da una tabella,
// uso la SELECT
// per farlo costruistro' il comando e lo metto in
// una variabile di stringa
//
// ******************************************************
$query = "SELECT * FROM FORNITORI";
21. PHP e MYSQL
Il comando SQL salvato in una variabile viene inviato alla
funzione mysqli_query che ha lo scopo di mandare il
comando al DBMS chiedendogli di eseguirlo.
// ******************************************************
// Lancio la query con la funziona PHP mysqli_query()
// che chiede due parametri
// 1)il primo è la variabile di connessione al database,
// 2)il secondo la stringa del comando sql.
//
// La funzione restituisce un risultato che salvo
// in una variabile che
// utilizzo per verificare se tutto è andato
// come mi aspettavo
// Se result vale false, allora non ho ottenuto risultati
// ******************************************************
$result = mysqli_query($db, $query);
if ($result) == FALSE {
die ("nessun dato in archivio");
}
22. PHP e MYSQL
Il risultato del comando SELECT è come un foglio
elettronico: un insieme di righe e colonne. E' salvato in una
variabile di tipo speciale (array) a cui abbiamo dato il nome
$result.
// ******************************************************
// Adesso costruisco una tabella (<TABLE>) delle
// dimensioni giuste per ospitare i dati ricevuti
//
// PHP ha la funzione mysqli_fetch_array() che serve
// per leggere il record corrente
// Quando è a fine file restituisce false
// ******************************************************
echo "<BR>";
echo "<TABLE BORDER=1>";
23. PHP e MYSQL
$result contiene dunque una tabella (recordset che si
scorre riga per riga). mysqli_fetch_array è la funzione
che scorre il recordset, restituisce il record corrente e
sposta il puntatore al record successivo.
// Ciclo finchè è vero, cioè finché ci sono record
while ($record = mysqli_fetch_array($result))
{
echo "<TR>";
// Output del primo campo del record corrente
echo "<TD>";
echo "$record[0] <BR>";
echo "</TD>";
// Output del secondo campo del record corrente
echo "<TD> $record[1] <BR> </TD>";
echo "</TR>";
}
echo "</TABLE";
24. PHP e MYSQL
$record è invece una variabile di tipo array che contiene
tutti i campi del record corrente.Per poter utilizzare il
contenuto occorre indicare la posizione nel vettore. La
prima posizione (0) è il contenuto del primo campo.
// Ciclo finchè è vero, cioè finché ci sono record
while ($record = mysqli_fetch_array($result))
{
echo "<TR>";
// Output del primo campo del record corrente
echo "<TD>";
echo "$record[0] <BR>";
echo "</TD>";
// Output del secondo campo del record corrente
echo "<TD> $record[1] <BR> </TD>";
echo "</TR>";
}
echo "</TABLE";
25. PHP e MYSQL
Potevo scrivere anche così:
// Ciclo finchè è vero, cioè finché ci sono record
while ($record = mysqli_fetch_array($result)== TRUE)
{
echo "<TR>";
// Output del primo campo del record corrente
echo "<TD>";
echo "$record[0] <BR>";
echo "</TD>";
// Output del secondo campo del record corrente
echo "<TD> $record[1] <BR> </TD>";
echo "</TR>";
}
echo "</TABLE";
26. PHP e MYSQL
Terminato l'output del risultato della query (comando SQL)
libero la memoria ($result) e chiudo le connessioni con il
DBMS.
// Distrugge il record set
// e libera la memoria utilizzata per gestirlo
mysqli_free_result($result);
// Chiude la connessione
mysqli_close($db);
?>
</body>
</html>