• Non ci sono risultati.

▪ Generazione di una nuova pagina XHTML

N/A
N/A
Protected

Academic year: 2021

Condividi "▪ Generazione di una nuova pagina XHTML "

Copied!
43
0
0

Testo completo

(1)

PHP

• Linguaggio di scripting lato server (progettato specificatamente per il Web)

• Inserimento di codice PHP in una pagina XHTML (sul server):

▪ Interpretazione del codice PHP (sul server)

▪ Generazione di una nuova pagina XHTML

▪ Invio della nuova pagina XHTML al client

Client

Form XHTML action = “file.php”

Invio dati di input

Server Interpretazione

“file.php”

Nuova pagina XHTML

Invio pagina XHTML generata

MySQL Istruzioni

SQL

(2)

PHP: Punti di Forza

• Prestazioni

• Scalabilità

• Interfacciamento verso svariati DBMS

• Librerie orientate allo sviluppo di applicazioni web

• Costo

• Facilità d’apprendimento e d’uso

• Supporto object-oriented

• Portabilità

• Disponibilità del codice sorgente

• Disponibilità di supporto e documentazione ( http://www.php.net/ )

(3)

Compilazione Form

(4)

Compilazione Form: modulo_ordine.html

<form action="gestisci_ordine.php" method="post">

<table border="0" cellspacing="10">

<colgroup>

<col width="70%" />

<col align="center" />

</colgroup>

<thead style="background-color:lavender">

<tr><th>Articolo</th><th>Quantità</th></tr>

</thead>

<tr>

<td>Flauto</td>

<td><input type="text" name="qflauto" size="3" maxlength="3" /></td>

</tr>

<tr>

<td>Violino</td>

<td><input type="text" name="qviolino" size="3" maxlength="3" /></td>

</tr>

<tr>

<td>Oboe</td>

<td><input type="text" name="qoboe" size="3" maxlength="3" /></td>

</tr>

<tr>

<td>Liuto</td>

<td><input type="text" name="qliuto" size="3" maxlength="3" /></td>

</tr>

<tr align="center">

<td colspan="2"><input type="submit" value="Spedisci Ordine" /></td>

</tr>

(5)

Gestione Form

(6)

Gestione Form: gestisci_ordine.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<title>Strumenti Musicali in Franciacorta</title>

</head>

<body>

<h1>Strumenti Musicali in Franciacorta</h1>

<h2>Gestione Ordine<h2>

<?php

echo "<p>Ordine gestito. Grazie per aver scelto i nostri prodotti.</p>";

?>

</body>

</html>

(7)

Struttura del Codice PHP

• Codice PHP incapsulato tra due tag :

• Istruzioni PHP terminate dal punto-e-virgola:

• Commenti in tre diversi stili:

<?php

... codice PHP ...

?>

echo 'Hello ';

echo 'world!';

/* Autore: Luigi Rossi

Ultima modifica: 3 settembre 2009

Questo script gestisce gli ordini dei clienti

*/

echo '

<p>Ordine gestito.</p>

'

; // Inizio stampa ordine

echo '

<p>Ordine gestito.</p>

'

; # Inizio stampa ordine

(8)

Contenuto Dinamico: gestisci_ordine_2.php

Argomento della funzione date() = stringa che specifica il formato:

▪ H = ore (in formato 24-ore)

▪ i = minuti

▪ j = giorno del mese

▪ S = suffisso ordinale (tipicamente, th)

▪ F = nome del mese

<body>

<h1>Strumenti Musicali in Franciacorta</h1>

<h2>Gestione Ordine<h2>

<?php

echo '<p>Ordine gestito alle ore ';

echo date("H:i, jS F");

echo '. Grazie per aver scelto i nostri prodotti.</p>';

?>

</body>

(9)

Contenuto Dinamico

(10)

Accesso alle Variabili del Form

• Accesso ai campi del form mediante elementi di array associativi:

▪ method="post" → $_POST['qviolino']

▪ method="get" → $_GET['qviolino']

• Array associativo:

• Possibile copiare valori in nuove variabili:

'qflauto' 2 'qviolino' 3 'qoboe' 2 'qliuto' 4

<?php

$qflauto = $_POST['qflauto'];

$qviolino = $_POST['qviolino'];

$qoboe = $_POST['qoboe'];

$qliuto = $_POST['qliuto'];

?>

chiave valore

(11)

Accesso alle Variabili del Form: gestisci_ordine_3.php

Operatore . (punto): genera la concatenazione delle stringhe

• Possibile inserire direttamente una variabile semplice nella stringa:

• Stringhe tra apici semplici: non applicano alcuna sostituzione:

<body>

<h1>Strumenti Musicali in Franciacorta</h1>

<h2>Gestione Ordine<h2>

<?php

echo "<p>Ordine gestito alle ore ";

echo date("H:i, jS F");

echo ". Grazie per aver scelto i nostri prodotti.</p>";

echo "<p>Ecco la lista degli articoli ordinati:</p>";

echo $_POST['qflauto'] . ' flauti <br />';

echo $_POST['qviolino'] . ' violini <br />';

echo $_POST['qoboe'] . ' oboe <br />';

echo $_POST['qliuto'] . ' liuti <br />';

?>

</body>

echo "$qoboe oboe <br />";

echo '$qoboe oboe <br />';

2 oboe

$qoboe oboe

(12)

Accesso alle Variabili del Form: Pagina Dinamica

(13)

Variabili

• Variabile = simbolo che rappresenta un dato

• Nome di una variabile (identificatore):

▪ Formato da lettere, cifre e underscore ‘_’

▪ Lunghezza illimitata

▪ Non può iniziare con una cifra

▪ Case sensitive: $qviolino ≠ $Qviolino

• Possibile creare variabili “a volontà”

• Variabile creata nel momento in cui viene assegnata la prima volta

$quantita = 0;

$costo = 0.00;

...

$quantita = $qviolino;

(14)

Tipi di Variabili

• Altri due tipi “speciali”:

▪ NULL: variabili cui non è assegnato un valore o sono state assegnate con NULL

▪ Resource: rappresentano risorse esterne (esempio: connessione al database)

• Variabili “elastiche” nel tipo di dati:

• Cast di tipo:

Tipo Natura del dato integer Numeri interi

double Numeri reali

string Stringhe di caratteri

bool Valori logici (true o false) array Vettori di dati

$quantita = 0;

$quantita = 'Hello';

$quantita = 0;

(15)

Costanti

• Mantiene un valore (come una variabile), che però non può essere cambiato

• Referenziazione della costante:

define('PREZZO_FLAUTO', 2500);

define('PREZZO_VIOLINO', 8000);

define('PREZZO_OBOE', 5400);

define('PREZZO_LIUTO', 11000);

define(nome-costante, valore)

define('PREZZO_FLAUTO', 2500);

$quantita = 4;

$costo = PREZZO_FLAUTO * $quantita;

(16)

Scope

Scope di una variabile $v = porzione del codice in cui è visibile $v :

▪ Variabili superglobali sono visibili ovunque nello script

▪ Costanti sono visibili ovunque nello script

▪ Variabili globali sono visibili ovunque nello script, tranne che nelle funzioni

▪ Variabili dichiarate globali nelle funzioni si riferiscono alle omonime variabili dichiarate globali fuori delle funzioni

▪ Variabili dichiarate statiche in una funzione sono visibili solo nella funzione ma mantengono il loro valore tra una chiamata e l’altra della funzione

▪ Variabili locali create in una funzione sono visibili solo nelle funzione e

scompaiono al termine della esecuzione della funzione

(17)

Superglobali

$GLOBALS : array di tutte le variabili globali (utile per accedere alle variabili globali dall’interno di una funzione, come con la keyword global)

$_SERVER : array delle variabili di ambiente del server web, ad esempio:

$_SERVER['DOCUMENT_ROOT'] = path assoluto della root dei documenti

$_SERVER['PHP_SELF'] = path del file di scripting relativo alla root

$_SERVER['SCRIPT_FILENAME'] = path assoluto del file di scripting

$_GET: array delle variabili passate allo script mediante il metodo get

$_POST: array delle variabili passate allo script mediante il metodo post

$_COOKIE : array delle variabili cookie

$_FILE : array delle variabili relative a caricamento di file sul server

$_ENV : array delle variabili di ambiente del sistema operativo del server

$_REQUEST : array di tutte le variabili di input, incluse quelle in $_GET , $_POST e

$_COOKIE (ma non $_FILES )

$_SESSION : array delle variabili di sessione

(18)

Operatori

• Simboli per manipolare valori (costanti e/o variabili) → producono un risultato

• Operatori aritmetici:

• Operatore di concatenazione di stringhe:

Simbolo Nome Esempio

+ Addizione $a + $b

- Sottrazione $a - $b

∗ Moltiplicazione $a ∗ $b

/ Divisione $a / $b

% Modulo $a % $b

$a = 'Strumenti Musicali ';

$b = 'in Franciacorta';

$titolo = $a . $b;

(19)

Operatori (ii)

• Operatore di assegnamento:

• Assegnamento produce un valore (quello della espressione nella parte destra) :

• Operatori di assegnamento combinato:

variabile = espressione

$b = 6 + ($a = 5);

5

11

Simbolo Esempio Equivalente a += $a += $b $a = $a + $b -= $a -= $b $a = $a - $b

∗= $a ∗= $b $a = $a ∗ $b /= $a /= $b $a = $a / $b

%= $a %= $b $a = $a % $b

.= $a .= $b $a = $a . $b

(20)

Operatori (iii)

• Operatori di incremento (++) e decremento (--)

• Entrambi gli operatori presenti in due forme:

Prima della variabile: → prima $a è incrementato (6), e poi valutato (6)

Dopo la variabile: → prima $a è valutato (5), e poi incrementato (6)

$a = 5;

echo ++$a;

$a = 5;

echo $a++;

$a = 3;

$b = 6;

echo ($a--) * (++$b);

$a: 2

$b: 7 echo: 21

6

5

(21)

Operatori (iv)

• Operatori di confronto:

• Operatore identità: operandi uguali e dello stesso tipo

Simbolo Nome Esempio

== Uguaglianza $a == $b

=== Identità $a === $b

!= Disuguaglianza $a != $b

!== Non identità $a !== $b

< Minore di $a < $b

> Maggiore di $a < $b

<= Minore o uguale $a <= $b

>= Maggiore o uguale $a >= $b

$a = 0;

$b = '0';

$a == $b: true

$a === $b: false

(22)

Operatori (v)

• Operatori logici: Simbolo Nome Esempio Risultato

! NOT !$a

$a !$a true false false true

&& AND $a && $b

$a $b $a && $b

true true true

true false false false true false false false false

|| OR $a || $b

$a $b $a || $b

true true true

true false true

false true true

false false false

(23)

Operatori (vi)

• Operatore condizionale (ternario):

( condizione ? valore-se-vera : valore-se-falsa )

echo ($voto >= 18 ? 'promosso' : 'bocciato')

$max = ($a >= $b ? $a : $b)

$max3 = ($a >= $b && $a >= $c ? $a : ($b >= $c ? $b : $c))

echo 'Hai ordinato ' . $qviolino . ' violin' . ($qviolino == 1 ? 'o' : 'i')

(24)

Applicazione a Gestione Form: gestisci_ordine_4.php

...

$quantita_totale = 0;

$quantita_totale = $_POST['qflauto'] + $_POST['qviolino'] + $_POST['qoboe'] + $_POST['qliuto'];

echo "Articoli ordinati: $quantita_totale <br />";

$costo_totale = 0.00;

define('PREZZO_FLAUTO', 2500);

define('PREZZO_VIOLINO', 8000);

define('PREZZO_OBOE', 5400);

define('PREZZO_LIUTO', 11000);

$costo_totale = $_POST['qflauto'] * PREZZO_FLAUTO + $_POST['qviolino'] * PREZZO_VIOLINO + $_POST['qoboe'] * PREZZO_OBOE +

$_POST['qliuto'] * PREZZO_LIUTO;

echo "Totale netto: &euro;" . number_format($costo_totale, 2) . "<br />";

$iva = 0.20;

$costo_totale *= (1 + $iva);

echo "Totale lordo (IVA inclusa): &euro;" . number_format($costo_totale, 2) . "<br />";

(25)

Applicazione Operatori a Gestione Form (ii)

(26)

Funzioni di Variabili

• Testing dello stato di una variabile:

isset($var): true se $var esiste, altrimenti false

isset($a, $b, $c, ... ): true se tutte esistono, altrimenti false

unset($var): elimina $var

empty($var): true se $var non esiste o ha valore zero, altrimenti false

$qviolino = 3;

$qarpa = 0;

echo 'echo1: ' . isset($qviolino) . '<br />';

echo 'echo2: ' . isset($qtimpani) . '<br />';

echo 'echo3: ' . empty($qviolino) . '<br />';

echo 'echo4: ' . empty($qtimpani) . '<br />';

echo 'echo5: ' . empty($qarpa) . '<br />';

echo1: 1 echo2:

echo3:

echo4: 1

echo5: 1

echo6: 1

(27)

Istruzione if

Il blocco istruzioni viene eseguito solo se condizione è vera

if(condizione ) istruzioni

if($quantita_totale == 0)

echo 'Non hai ordinato alcun articolo! <br />';

if($costo_totale >= 30000) {

echo 'Hai diritto ad uno sconto del 10% <br />';

echo 'Oppure, se preferisci, puoi avere un articolo gratis! <br />';

}

(28)

Istruzione else

Blocco istruzioni eseguito solo se la condizione del precedente if è falsa

else istruzioni

if($quantita_totale == 0)

echo "Non hai ordinato alcun articolo! <br />";

else {

echo 'Ecco la lista degli articoli: <br />';

echo '<ul>';

echo "<li>$qflauto flauti</li>";

echo "<li>$qviolino violini</li>";

echo "<li>$qoboe oboe</li>";

echo "<li>$qliuto liuti</li>";

echo "</ul>";

}

(29)

Istruzione elseif

• Usato quando si hanno più di due rami decisionali:

• Eseguito solo il blocco di istruzioni corrispondente alla prima condizione vera

Se nessuna condizione vera, eseguito il blocco della else (se specificata)

elseif ( condizione ) istruzioni

if($costo_totale <= 10000) $sconto = 0.0;

elseif($costo_totale > 10000 && $costo_totale <= 20000) $sconto = 0.10;

elseif($costo_totale > 20000 && $costo_totale <= 40000) $sconto = 0.20;

elseif($costo_totale > 40000 && $costo_totale <= 80000) $sconto = 0.25;

else

$sconto = 0.30;

(30)

Istruzione switch: Estensione Modulo Ordine

• Usato quando si hanno diverse computazioni in corrispondenza dei diversi valori di una espressione

switch ( espressione ) {

case const1: istruzioni1

case constn: istruzionin

[ default: istruzioni ] }

(31)

Istruzione switch: modulo_ordine_esteso.html

...

<tr>

<td>Come hai conosciuto il nostro negozio?</td>

<td>

<select name="conosciuto">

<option value="a">Cliente abituale</option>

<option value="t">Spot in televisione</option>

<option value="g">Pagine gialle</option>

<option value="i">Ricerca in internet</option>

</select>

</td>

</tr>

...

...

switch($_POST['conosciuto']) {

case 'a': echo '<p>Cliente abituale</p>';

break;

case 't': echo '<p>Ciente informato da spot in televisione</p>';

break;

case 'g': echo '<p>Ciente informato da pagine gialle</p>';

break;

case 'i': echo '<p>Ciente informato da ricerca in internet</p>';

break;

default: echo '<p>Non sappiamo come il cliente ci abbia conosciuto</p>';

}

gestione_ordine_esteso.php

(32)

Iterazioni

• Quando necessario eseguire lo stesso blocco di istruzioni più volte

(33)

Iterazioni: tabella_costi.html

<table border="1" cellspacing="0" cellpadding="10">

<thead style="background-color:lavender">

<tr>

<th>Distanza (Km)</th>

<th>Costo (&euro;)</th>

</tr>

</thead>

<tr>

<td>100</td>

<td>50</td>

</tr>

<tr>

<td>200</td>

<td>100</td>

</tr>

...

<tr>

<td>500</td>

<td>250</td>

</tr>

</table>

(34)

Ciclo while: tabella_costi.php

Blocco istruzioni eseguito finchè condizione è vera

while( condizione ) istruzioni

<table border="1" cellspacing="0" cellpadding="10">

<thead style="background-color:lavender">

<tr>

<th>Distanza (Km)</th>

<th>Costo (&euro;)</th>

</tr>

</thead>

<?php

$distanza = 100;

while($distanza <= 500) {

echo '<tr><td>' . $distanza . '</td>';

echo '<td>' . ($distanza/2) . '</td></tr>';

$distanza += 100;

}

?>

(35)

Ciclo for

Significato esprimibile in termini di ciclo while:

for(espressione

1

; espressione

2

; espressione

3

)

istruzioni espressione

1

;

while(espressione

2

) {

istruzioni

espressione

3

; }

<table border="1" cellspacing="0" cellpadding="10">

<thead style="background-color:lavender">

<tr>

<th>Distanza (Km)</th>

<th>Costo (&euro;)</th>

</tr>

</thead>

<?php

for($distanza = 100; $distanza <= 500; $distanza += 100) {

echo '<tr><td>' . $distanza . '</td>';

echo '<td>' . ($distanza/2) . '</td></tr>';

}

?>

</table>

tabella_costi_a.php

(36)

Ciclo do…while

Simile al ciclo while, ma condizione testata dopo l’esecuzione di istruzioni

do

istruzioni

while (condizione )

<table border="1" cellspacing="0" cellpadding="10">

<thead style="background-color:lavender">

<tr>

<th>Distanza (Km)</th>

<th>Costo (&euro;)</th>

</tr>

</thead>

<?php

$distanza = 100;

do {

echo '<tr><td>' . $distanza . '</td>';

echo '<td>' . ($distanza/2) . '</td></tr>';

$distanza += 100;

}while($distanza <= 500)

?>

(37)

Esercizio 1

• Calcolare l'operazione specificata:

modulo_operazione.html gestisci_operazione.php

(38)

Esercizio 2

• Calcolare l'operazione specificata:

modulo_numeri_primi.html gestisci_numeri_primi.php

(39)

Esercizio 3

• Generare la tabella pitagorica (di dimensione data):

modulo_tabella_pitagorica.html

gestisci_tabella_pitagorica.php

(40)

Esercizio 4

• Generare la tabella delle potenze (dati numero di basi e numero di esponenti ):

modulo_tabella_potenze.html

gestisci_tabella_potenze.php

(41)

Esercizio 5

• Pannello dei colori: cambia il colore dello sfondo selezionando il bottone

colori.php colori.php colori.php

(42)

Esercizio 6

• Definizione del colore nella notazione RGB:

rgb.php rgb.php rgb.php

rgb.php rgb.php rgb.php

(43)

Esercizio 7

• Spettro dei colori:

spectrum.php

Riferimenti

Documenti correlati

Vista la definizione di derivata parziale e il suo legame con la nozione di differenziale messa in evidenza precedentemente,. possiamo concludere che le regole di derivazione già

 Formula di Taylor per funzioni Formula di Taylor per funzioni di più

Come abbiamo visto (vedi lezione: Rappresentazione di funzioni di due variabili nello spazio cartesiano) le funzioni di due variabili si possono rappresentare nello spazio

[r]

VARIABILI LOCALI, cioè sono “note” (utilizzabili) solo all’interno delle funzione nella quale sono state definite Anche i parametri di una funzione sono variabili locali!.. C

Come per le funzioni ad una sola variabile si definisce DOMINIO DI UNA FUNZIONE A due VARIABILI l'insieme dei valori che possono essere attribuiti alle variabili indipendenti

Un sistema di disequazioni lineari in due variabili è un insieme di due o più disequazioni lineari in due variabili racchiuse da una parentesi graffa la cui

Considerata l’esigenza, anche alla luce delle modificazioni dell’atto di indirizzo e coordinamento nazionale di cui al DPR 14.1.1997 conseguenti all’approvazione del