Verso l architettura MVC-2 PHP: Hypertext Preprocessor



Documenti analoghi
PHP+ PROGRAMMAZIONE+DI+BASI+DI+DATI+ SU+WEB+CON+IL+LINGUAGGIO+PHP+ ! Consente'di'inserire'elemen-'dinamici'nelle'Pagine' Web' !

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans

PHP - Storia. Inizialmente sviluppato da Rasmus Lerdorf come serie di script CGI

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Laboratorio di Basi di Dati e Web

Richiesta pagina PHP (es: index.php)

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

bool mysql_select_db([string database_name [,resource link_identifier]]) Connessione ad un server MySQL vuole conettere

Laboratorio di reti II: Gestione di database lato server

Introduzione a PHP Gestione dei Dati e della Conoscenza

Università degli Studi di Cagliari Corso di Laurea in Ingegneria delle Telecomunicazioni.


Come trattare il risultato di un comando SQL (relazioni) che

Esercitazione sulle libpq - libreria C per PostgreSQL

Lavorare con MySQL Parte Seconda.

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Corso di Web Programming

Gestione Orario Lezioni: Schema del Database

Laboratorio di Basi di Dati

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

PHP. Indice. PHP: Hypertext Preprocessor. Introduzione Sintassi Fondamentale Tipi Variabili Costanti Operatori Strutture di controllo

Esercitazione 8. Basi di dati e web

PHP e MySQL. Scripting server-side per accesso a DB MySQL

Eprogram ITIS V anno Unità 6 - PHP e MySQL

Basi di Dati Esercitazione JDBC. Giugno 2007

GERARCHIE RICORSIVE - SQL SERVER 2008

Una metodologia di progettazione di applicazioni web centrate sui dati

Progetto di Basi di Dati e Multimidia Laboratorio Struttura dell applicazione web

Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica.

MySQL Database Management System

PHP e Structured Query Language

Laboratorio di Basi di Dati

TOP DOWN. Preparati per il compito in classe Modulo 5

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali

Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB

Volumi di riferimento

The world s most advanced class on PostgreSQL o quasi! 4 Marzo 8 Aprile L'Antipasto 11 Marzo

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

La tecnologia ASP.NET e i database

Java: la libreria delle classi

19. LA PROGRAMMAZIONE LATO SERVER

Corso di Web Programming

JDBC versione base. Le classi/interfacce principali di JDBC

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo

BASI DI DATI Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

Lezione 9. Applicazioni tradizionali

VBScript. VBScript. Visual Basic Scripting Edition. Linguaggio di script per browser e server Microsoft Deriva da Visual Basic, ma è interpretato

LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

Corso di Informatica Modulo T3 B2 - Database in rete

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

ASP 3.0 Il Sito Dinamico

PHP e MySQL. Guida scaricata da

Oracle PL/SQL. Motivazioni

Un client su arduino invia i dati acquisiti ad un database

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Esercitazione PAM. (Php Apache MySQL)

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Lezione 8. Metadati, Viste e Trigger

RenderCAD S.r.l. Formazione

Esercitazione su JDBC

Applicazione client-server in PHP con database MySQL

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server

Fondamenti di Programmazione

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

DBMS ed Applicazioni Motivazioni

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

Tecnologie e Programmazione Web

Dott.ssa Adriana Pietramala. Dott.ssa Maria Vittoria Avolio

Matlab: Strutture di Controllo. Informatica B

Corso sul linguaggio SQL

Anno 2013 Informatica ABACUS

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

GESTIONE INFORMATICA DEI DATI AZIENDALI

Basi di dati (6) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: T-SQL (1.

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

2011 Politecnico di Torino 1

Approfondimenti. Il controllo di SQL Injection nelle pagine ASP e ASP.NET. U.A. 5 - Database in rete con le pagine ASP e ASP.

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Programmazione ad eventi in PHP Implementare gli eventi e gestire una coda di messaggi

Architettura a tre livelli (1)

Introduzione JDBC interfaccia java.sql driver caricare i driver


Dispensa di database Access

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE

Remote SQL Command Execution

JDBC per l accesso Java a DB. Tito Flagella tito@link.it

Transcript:

Verso l architettura MVC-2 PHP: Hypertext Preprocessor 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3

PHP per generare pagine web dinamiche Anche uno script PHP può essere visto come uno schema di pagina Web dove: le parti statiche sono scritte in HTML e le parti dinamiche sono generate attraverso porzioni di codice PHP. Gli script PHP vengono gestiti da un componente operante sul web server (PHP module). Questo componente interpreta ed esegue gli script PHP. Riferimento: http://www.php.net/ 2

Funzionamento PHP (1) 3 Codice sorgente PHP: è scritto dal programmatore dell applicazione web, con la collaborazione di altri esperti per la parte di presentazione (grafici, ). Si tratta di un file con estensione.php contenente: Codice HTML: parti statiche e grafica Scripting PHP: parti dinamiche

Funzionamento PHP (2) 4 Richiesta HTTP Server HTTP Application Server PHP Module Interpretazione ed esecuzione dello script PHP Risposta HTML Generazione codice HTML

Sintassi PHP Uno script PHP può essere visto come un documento HTML esteso con alcuni marcatori speciali per immergere codice nell HTML. Il macatore speciale per le porzioni di PHP è: <?php?> <script languge= php >. </script> forme brevi (solo se abilitate): <??> per <?php?> <?=?> per <?php echo ;?> 5

Caratteristiche base del linguaggio 6 Variabili semplici TIPI BASE: boolean (TRUE, FALSE), integer (intero con segno: 453, -22), float (numeri in virgola mobile, 1.234, 2E-10) e string (qualsiasi stringa di carattere: hello, world ) NOMI VARIABILI: iniziano sempre con il carattere $ e sono case sensitive TIPO della VARIABILE: viene definito nel primo assegnamento; non ci sono dichiarazioni di tipo. ASSEGNAMENTO: $a = TRUE; $B = pippo, $vint = 3, $vfloat = 0.343 <? $a_bool = TRUE; // a boolean $a_str = "foo"; // a string $a_str2 = 'foo'; // a string $an_int = 12; // an integer?> <p> a_bool is of type <?=gettype($a_bool);?></br> a_str is of type <?=gettype($a_str);?> </p> // If this is an integer, increment it by four <? if (is_int($an_int)) { $an_int += 4; echo Integer: $an_int ; } // If $a_bool is a string, print it out else does not print out anything if (is_string($a_bool)) { echo "String: $a_bool"; }?>

Caratteristiche base del linguaggio 7 Variabili di tipo array ASSEGNAMENTO: $arr = array(); // array vuoto $arr = array( key => value, key2 => value2, key3 => value3,... ); $arr1 = array(1 => "a", pippo" => "b, b" => pippo, ); $arr2 = [ alberto" => 3, roberto" => 1, ]; ACCESSO AI VALORI: $arr [KEY] $v = $arr1[1]; // viene assegnata la stringa a alla variabile $v $w = $arr2[ alberto ]; // viene assegnato l intero 3 alla variabile $w AGGIUNTA e ELIMINAZIONE di VALORI: $arr [KEY] = VALUE, unset($arr[key]) $arr2[ ugo ] = 10; // viene aggiunto un elemento all array $arr2 ugo => 1o unset($arr2[ alberto ]) // viene cancellato l elemento di chiave alberto unset($arr2) // viene cancellato tutto l array

Caratteristiche base del linguaggio Controllo di flusso e cicli IF. ELSE : if (condizione) istruzione; if ($a > $b) echo "a è maggiore di b"; if (condizione) { istruzione1; istruzionen; } if ($a > $b) { } echo "a è maggiore di b"; $c = $a; if (condizione) { istr1; istrn; } else { istr1; istrm; } if ($a > $b) { echo "a è maggiore di b"; } else { echo "a non è maggiore di b"; } 8 if (cond1) { istr1; istrn; } elseif (cond2) { istr1; istrm; } else { }

Caratteristiche base del linguaggio 9 Controllo di flusso e cicli WHILE : le istruzioni del corpo { } vengono ripetute mentre la condizione cond risulta vera. Quando cond diventa falsa il ciclo termina. while(cond) { istruzione1; istruzionen; } $i = 1; while ($i <= 10) { } echo $i++; FOR : le istruzioni del corpo { } vengono ripetute mentre la condizione cond risulta vera. Quando cond diventa falsa il ciclo termina. for(istr1; cond; istr2) { istruzione1; istruzionen; } $i = 1; for ($i = 1; $i <= 10; $i++) { } echo $i;

Caratteristiche base del linguaggio 10 Controllo di flusso e cicli FOREACH : le istruzioni del corpo { } vengono ripetute su tutti gli elementi dell array array1. foreach(array1 as $value) { istruzione1; istruzionen; } oppure $arr = array(10, 20, 30, 40); foreach ($arr as $value) { } echo valore: $value ; foreach(array1 as $key => $value) { istruzione1; istruzionen; } $arr = array( a =>10, b => 20, f => 30, g => 40); foreach ($arr as $key => $value) { } echo chiave: $key => valore: $value ;

Caratteristiche base del linguaggio 11 Commenti // /* */ # Inclusioni require(filepath): include il file indicato require_one(filepath): include il file indicato se non è già stato incluso

Funzioni Caratteristiche base del linguaggio function Fname ($arg1, $arg2, /*..., */ $argn) { echo "Esempio di funzione.\n"; echo Argomenti: $arg1, $arg2,, $argn ; $retval = $arg1 + $arg2 + + $argn; return $retval; } Senza return la funzione ritorna NULL. 12

Classi e oggetti Classi e oggetti in PHP Anche in PHP è possibile definire classi e istanziarle creando oggetti. Definizione di una classe: Istanziazione: <?php?> $instance = new SimpleClass(); // This can also be done with a variable: $classname = SimpleClass'; $instance = new $classname(); // SimpleClass() echo $instance->var; echo $instance->displayvar(); 13 <?php class SimpleClass { // property declaration public $var = 'a default value'; // method declaration public function displayvar() { echo $this->var; } }?>

Interazione con un DBMS da PHP 14 Libreria per l interazione con database postgres. (http://it2.php.net/manual/en/book.pgsql.php)

Esempio 15 <?php // Connecting, selecting database $dbconn = pg_connect("host=localhost dbname=publishing user=www password=foo") or die('could not connect: '. pg_last_error()); // Performing SQL query $query = 'SELECT * FROM authors'; $result = pg_query($query) or die('query failed: '. pg_last_error()); // Printing results in HTML?> <html> <head><title>estrazione dati dalla tabella authors</title></head> <body> <table> <? while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {?> <tr> <? foreach ($line as $col_value) {?> <td><?=$col_value?></td> <? }?> </tr> <? }?> </table> </body> </html> <? // Free resultset pg_free_result($result); // Closing connection pg_close($dbconn);?>

Apertura di una connessione 16 pg_connect(connectionstring) opens a connection to a PostgreSQL database specified by the connectionstring. Esempio $dbconn = pg_connect("host=dbserver.scienze.univr.it dbname=did2013 port=5432 user=userlabxx password=yy") Restituisce in caso di successo una connection resource per PostgreSQL, FALSE se fallisce.

Esecuzione di una interrogazione 17 pg_query(connectionres, querystring) executes the querystring on the specified database connectionres. Esempio $result = pg_query($conn, "SELECT author, email FROM authors"); if (!$result) { } echo "An error occurred.\n"; exit; Restituisce in caso di successo una query result resource (è simile ad un resultset di JDBC), FALSE se fallisce.

Elaborazione del risultato di una interrogazione pg_fetch_array(queryresultres, [row, resulttype]) returns an array that corresponds to the fetched row (record), belonging to the queryresultres. FALSE is returned if row exceeds the number of rows in the set, there are no more rows, or on any other error. row indica la riga da restituire (se non precisato o null, viene restituita la riga successiva). resulttype indica il tipo indice usato nell array restituito. PGSQL_ASSOC (indice associativo), PGSQL_NUM (indice numerico) e PGSQL_BOTH (entrambi, è il default). Esempio $result = pg_query($conn, "SELECT author, email FROM authors"); $arr = pg_fetch_array($result); echo $arr["author"]. " <- Row 1 Author\n"; echo $arr["email"]. " <- Row 1 E-mail\n"; 18

Eliminazione del risultato dell interrogazione 19 pg_free_result(queryresultres) frees the memory and data associated with the queryresultres. Esempio $result = pg_query($conn, "SELECT author, email FROM authors"); pg_free_result($result)

Chiusura della connessione 20 pg_close(connectionres) Closes a connection to a PostgreSQL database specified by the connectionres. Esempio pg_close($dbconn)

Esecuzione di interrogazioni parametriche Funzioni alternative a pg_query per l esecuzione di interrogazioni parametriche. 21 pg_prepare(connectionres, queryname, querystring); $result = pg_execute(connectionres, queryname, arrayofparametervalues);

Esecuzione di una interrogazione parametrica 22 pg_prepare(connectionres, queryname, querystring) creates a prepared statement querystring for later execution with pg_execute(). This feature allows commands that will be used repeatedly to be parsed and planned just once, rather than each time they are executed. queryname is the name of the prepared command. Esempio pg_prepare($conn, myquery, "SELECT author, email FROM authors WHERE id = $1"); $result = pg_execute ($conn, myquery, array(189));

Esecuzione di una interrogazione parametrica 23 pg_execute(connectionres, queryname, arrayofparam) Sends a request to execute a prepared statement with given parameters, and waits for the result. The values contained in arrayofparam replace the parameter $1, $2,. in the prepared parametric query. The replacement follows the array order. Esempio pg_prepare($conn, myquery, "SELECT author, email FROM authors WHERE id = $1"); $result_1 = pg_execute ($conn, myquery, array(189)); $result_2= pg_execute ($conn, myquery, array(17));

Architettura applicazione PHP Una classe PHP organizzata come un Bean per ogni risultato di interrogazione da gestire. Tante variabili private per rappresentare i dati Tanti metodi getter e setter come per i Java Bean Una classe PHP per l interazione con il DBMS, contiene: Tutte le query SQL come stringhe eventualmente con parametri ($1, $2, ) Una funzione getxxx per ogni interrogazione parametrica che restituisce array di oggetti delle classi Bean Un file PHP per ogni schema di pagina da gestire nell applicazione 24