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