BASI DI DATI - Ingegneria elettrica ed elettronica

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>