Programmazione PHP - Home - Dipartimento di ingegneria...

13
! 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

Transcript of Programmazione PHP - Home - Dipartimento di ingegneria...

! 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