programmazione php - home - dipartimento di ingegneria...
TRANSCRIPT
! PROGRAMMAZIONE+DI+BASI+DI+DATI+SU+WEB+CON+IL+LINGUAGGIO+PHP+
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
2
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
3
Esempio((
avvio'sequenza'di'codice'php'
fine'sequenza'di'codice'php'
Premendo'il'bo=one'si'
riesegue'il'codice'PHP'
Giorgio Giacinto 2012
4
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
5
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
6
! Caratteristiche+di+base+di+PHP+
Giorgio Giacinto 2012
7
Rappresentazione+di+stringhe+
Giorgio Giacinto 2012
8
here'documents'
concatenazione'
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
9
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
10
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
11
Esempi+di+array+PHP+
Giorgio Giacinto 2012
12
aggiornamento' inserimento'
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
13
Riscrittura+Esempio+Iniziale+con+Funzioni+
Giorgio Giacinto 2012
14
Altro+Esempio+di+Uso+di+Funzioni+
Giorgio Giacinto 2012
15
funzione'predefinita'
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
16
Variabile+Form+
! $_POST!! Fornisce'I'valori'inseri-'dall’uten-'all’interno'di'un'
form'HTML''
! Tag''<INPUT>!
Giorgio Giacinto 2012
17
! Programmazione+PHP+per+Basi+di+Dati+
Giorgio Giacinto 2012
18
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
19
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'
'
! DB::isError(<variable>)!! Verifica'errori'di'accesso'alla'Base'di'Da-'
Giorgio Giacinto 2012
20
<DBMS software>://<user_account>:<password>@<database server>!
Esempio+di+Connessione++a+una+Base+di+Dati+
Giorgio Giacinto 2012
21
variabile'di'connessione'
alla'base'di'da-'
termina'il'programma'
placeholder'
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
22
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
23
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
24
Esempio+Interrogazione+
Giorgio Giacinto 2012
25
Interrogazione'dinamica'
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
26