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