Programmazione PHP
Transcript
Programmazione PHP
PROGRAMMAZIONE+DI+BASI+DI+DATI+ !
SU+WEB+CON+IL+LINGUAGGIO+PHP+
2
PHP+
! Consente'di'inserire'elemen-'dinamici'nelle'Pagine'
Web'
! PHP''
! Linguaggio'di'script'open%source%
! Le'funzioni'in'PHP'sono'eseguite'dal'server'
! Gli'interpre-'sono'disponibili'gratuitamente'
! Disponibile'per'la'maggior'parte'delle'pia=aforme'
! Nei'sistemi'UNIX/Linux'di'solito'fa'parte'
dell’installazione'di'base'
Giorgio Giacinto 2012
3
Siti+Web+e+PHP+
! DBMS''
! Server'di'Basi'di'Da-'–'strato'pù'basso'
! Oracle,'MySQL,'SQL'Server,'PostgreSQL,'ecc.'
! PHP'
! Server'Web'–'strato'intermedio'
! Si'interfaccia'al'DBMS'con'ODBC'
! HTML''
! Strato'client'
Giorgio Giacinto 2012
4
avvio'sequenza'di'codice'php'
Esempio((
fine'sequenza'di'codice'php'
Premendo'il'bo=one'si'
riesegue'il'codice'PHP'
Giorgio Giacinto 2012
5
Commenti+relativi+all’Esempio++
! $_POST !
! Variabile'autoTglobale'PHP'predefinita'
! È'un'array'che'con-ene'tuV'i'valori'inseri-'
dall’utente'all’interno'di'un'modulo'(form)'
! La'dimensione'degli'array'PHP'è'dinamica'
! Indicizza-'con'numeri'interi'(posizione)'o'con'
stringhe'(associazione)''
! Porzioni'di'testo'HTML'racchiuso'tra'marcatori''
! <<<_HTML_ (apertura)'e'_HTML_ (chiusura)'
Giorgio Giacinto 2012
6
Altri+commenti+relativi+all’Esempio+
! Nomi'di'variabili'PHP'
! Iniziano'con'il'cara=ere'$!
! possono'contenere'le=ere,'numeri'e'il'cara=ere'_!
! $_SERVER!
! variabile'autoTglobale'predefinita'
! È'un've=ore'contenente'infromazioni'sul'server'
locale'
! $_SERVER(‘PHP_SELF’)'indica'il'file'PHP'
a=ualmente'in'esecuzione!
Giorgio Giacinto 2012
7
Caratteristiche+di+base+di+PHP+
!
Giorgio Giacinto 2012
8
Rappresentazione+di+stringhe+
concatenazione'
here'documents'
Giorgio Giacinto 2012
9
Tipi+di+dati+e+Costrutti+di+Programmazione+
! Tipi'di'Da-'Numerici'
! Numeri'interi'e'numeri'in'virgola'mobile'
! CostruV'dei'linguaggi'di'programmazione'
! Ciclo'for%
! Ciclo'while'
! Istruzione'condizionale'if'
! Espressioni'Booleane'e'operatori'di'confronto'
! Sintassi'iden-ca'al'linguaggio'C'
Giorgio Giacinto 2012
10
Array+in+PHP+
! Elemen-'di'menu'a'tendina'
! Array'monodimensionale'
! Risulta-'di'interrogazioni'a'basi'di'da-'
! Array'bidimensionale'
! Una'dimensione'rappresenta'le'righe'della'tabella'
risultato'
! L’altra'dimensione'rappresenta'gli'a=ribu-'
Giorgio Giacinto 2012
11
Array+Numerici+e+Array+Associativi+
! Array'numerici'
! A'ciascun'elemento'dell’array'è'associato'un'indice'
numerico'
! Gli'indici'sono'numeri'interi'
! Iniziano'da'zero'
! Incremento'unitario'
! Array'associa-vi'
! Gli'elemen-'u-lizzano'la'rappresentazione''
(chiave%=>'valore)'
Giorgio Giacinto 2012
12
Esempi+di+array+PHP+
aggiornamento'
Giorgio Giacinto 2012
inserimento'
13
Funzioni++in+PHP+
! Le'funzioni'consentono'
! La'stru=urazione'di'programmi'complessi'
! La'condivisioni'di'sezioni'comuni'di'codice'
! Gli'argomen-'di'una'funzione'sono'sempre'passa-'
per%valore%
! Valgono'le'usuali'regole'di'visibilità'(scope)'delle'
variabili'
! Variabili'locali'e'globali'
! Variabili'globali'accessibili'tramite'il've=ore'
$GLOBALS!
Giorgio Giacinto 2012
14
Riscrittura+Esempio+Iniziale+con+Funzioni+
Giorgio Giacinto 2012
15
Altro+Esempio+di+Uso+di+Funzioni+
funzione'predefinita'
Giorgio Giacinto 2012
16
Variabile+Server+
! Variabile'autoTglobale'predefinita'$_SERVER'
! Array'che'fornisce'informazioni'sul'server'nel'quale'
viene'esefguito'l’interprete'PHP'
! Esempi:'
! $_SERVER['SERVER_NAME']!
! $_SERVER['REMOTE_ADDRESS']!
! $_SERVER['REMOTE_HOST']!
! $_SERVER['PATH_INFO']!
! $_SERVER['QUERY_STRING']!
! $_SERVER['DOCUMENT_ROOT']!
Giorgio Giacinto 2012
17
Variabile+Form+
! $_POST!
! Fornisce'I'valori'inseri-'dall’uten-'all’interno'di'un'
form'HTML''
! Tag''<INPUT>!
Giorgio Giacinto 2012
18
Programmazione+PHP+per+Basi+di+Dati+
Giorgio Giacinto 2012
!
19
Introduzione+
! PEAR'MDB2'library''
! Parte'di'PHP'Extension'and'Applica-on'Repository'
(PEAR)'
! In'precedenza'distribuita'come'PEAR'DB'
! Con-ene'funzioni'per'l’accesso'a'diversi'DBMS'
! Codice'riusabile'
! Esistono'estensioni'specifiche'distribuite'dai'
produ=ori'dei'DBMS'
! Il'codice'PHP'non'è'riusabile''
Giorgio Giacinto 2012
20
Connessione+a+una+Base+di+Dati+
! Necessario'caricare'il'modulo'MDB2.php!
! Si'accede'alle'funzioni'di'libreria'con'il'comando'
DB::<function_name>!
! DB::connect('string')!
! Consente'di'conne=ersi'a'una'base'di'da-'
! Il'parametro''string''ha'il'formato'
'
<DBMS software>://<user_account>:<password>@<database server>!
! DB::isError(<variable>)!
! Verifica'errori'di'accesso'alla'Base'di'Da-'
Giorgio Giacinto 2012
21
Esempio+di+Connessione++
a+una+Base+di+Dati+
variabile'di'connessione'
alla'base'di'da-'
termina'il'programma'
placeholder'
Giorgio Giacinto 2012
22
Interrogazioni+
! Funzione'di'interrogazione'
! query acce=a'come'argomento'una'stringa'
contenente'un'comando'SQL'
! L’interrogazione'viene'inviata'al'DBMS'per'essere'
eseguita'
! $d–>setErrorHandling(PEAR_ERROR_DIE)!
! Il'programma'viene'terminato'e'viene'stampato'un'
messaggio'predefinito'in'caso'di'errore'
Giorgio Giacinto 2012
23
Raccolta+di+Dati+dai+Moduli++
e+Inserimento+di+Record+
! Le'informazioni'sono'raccol-'a=raverso'moduli'
(form)'HTML'o'altri'-pi'di'moduli'Web'
! Per'ciascun'record'da'inserire'nella'Base'di'Da-,'
genera'un'iden-ficatore'univoco.'
! La'funzione'PHP'nextID'crea'una'sequenza'di'
valori'univoci'per'una'tabella.'
! Placeholder'
! Specificato'dal'simbolo'?''
Giorgio Giacinto 2012
24
Interrogazioni+per+il+reperimento+di+dati+
! Una'variabile'per'memorizzare'il'risultato'di'una'
interrogazione'(ad'es.,'$q)'
! $q->fetchRow()'recupera'il'record'successivo'e'
controlla'la'fine'del'ciclo'
! $d=>getAll!
! Memorizza'I'record'o=enu-'da'una'query'nella'
variabile'$allresult!
Giorgio Giacinto 2012
25
Esempio+Interrogazione+
Interrogazione'dinamica'
Giorgio Giacinto 2012
26
Esempio+estensione+PostgreSQL+
<?php!
$dbconn = pg_connect("host=localhost dbname=publishing user=www password=foo")!
or die('Could not connect: ' . pg_last_error());!
!
$query = 'SELECT * FROM authors';!
$result = pg_query($query) or die('Query failed: ' . pg_last_error());!
!
echo "<table>\n";!
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {!
echo "\t<tr>\n";!
foreach ($line as $col_value) {!
echo "\t\t<td>$col_value</td>\n";!
}!
echo "\t</tr>\n";!
}!
echo "</table>\n";!
!
pg_free_result($result);!
!
pg_close($dbconn);!
?>!
Giorgio Giacinto 2012