PHP – Hypertext Preprocessor
Motore di scripting (eseguiti sul server)
Sintassi “C-like”
Piattaforme diverse
Linguaggio potente, ricco di funzioni
Connessione a database
Modulo del Web Server
...modulo CGI
A cosa vogliamo arrivare
Php
Mysql
Php + Mysql >>> Applicazioni web dinamiche
Pagine statiche
Html = pagine statiche
Javascript migliora molto la dinamicità client
Necessario aggiornare contenuti e dati
Web Server
Una applicazione server: Apache, IIS, ...
Riceve richieste client
Interagisce con altre applicazioni server
Determina ed invia al client risposta con dati e/o codice HTML
Cosa serve
Xampp: Download
Installazione
Prova
Editor di testo
Browser
Dal server Php…
<?phpecho “<h1> Hello World! </h1>”;
echo “<h3> Benvenuti nel corso di Sistemi Informativi </h3>”;?>
…al Client
Iniziamo con Php
Il tag per inserire codice php:<?php … ?>
Per scrivere nella pagina:echo “Hello World!”
Print(“......”)Nomi variabili:
$a, $b, $importoCostanti
define("COSTANTE", "Ciao mondo.");
I cicli
while($i>0) { echo “i vale $i”; }
do {
echo "$i <br />\n";
$i++;
} while ($i < 10);
for ($i=-5; $i < 5; $i++) { echo "$i <br />\n"; }
Variabili Stringa
$s=”Linkin Park”;
print(“stringa = $s”);
for ($i=0; $i<strlen($s); $i++) {
print($s{$i}.“<br>”);
}
Caratteri speciali tra apici
\' singolo apice
\” doppio apice
\\ backslash
\r ritorno a capo
\n nuova linea
\t tabulazione orizzontale
Da usare dentro una stringa tra singoli o doppi apici
esempio: “Marta disse: \”Firenze lo sa\”\n\r”
Operatori
Operatori aritmetici+ - * / % ++ –Operatori di assegnamento+= -= *= /= %= &=Operatori relazionali== === < <= > >= != !==Operatori logici&& AND || OR XOR !
$a%=$b equivale a $a=$a%$b
Flusso di controllo
if ($saldo==0) {
…;
} else {
...;
}
if ... elseif … else ...
Operatore ternario
Condizione ?cosa fare per vero ? Cosa fare per falso
Esempio
<p class=”<? echo (Riga%2 =0 ? "pari" : "dispari") ?> “>
Flusso di controllo
if ($saldo==0) {
…;
} else {
...;
}
if ... elseif … else ...
switch e break
Switch ($scelta) {
case “+” : $r=$a+$b;
break;
case “-” : $r=$a-$b;
break;
case “*” : $r=$a*$b;
break;
case “/” : $r=$a/$b;
break;
default : echo “operatore errato!”;
}
foreach
Ciclo su tutti gli elementi di un array (utile soprattutto per la visita di array associativi)
$a=array(“ieri”,”oggi”,”domani”,”dopodomani”);
foreach($a as $ele) {
print(“$ele <br>”);
}
break – continue - exit
break :
Permette l'uscita da qualsiasi ciclo
continue :
Salta all'inizio del ciclo per l'iterazione successiva
exit :
Interrompe completamente l'esecuzione dello script
try … catch (MyException $e) ...
try {
// istruzione che puo' causare errore
} catch (Exception $e) {
// istruzioni in caso di errore
}
Funzioni
Per dichiarare la funzione
function somma($a, $b) {
$c=$a+$b;
return $c;
}
per richiamarla
$somma=somma($val1,$val2);
Oppure ancheprint(“la somma e' : “.somma($val1,$val2).”<br>”);
Visibilità Variabili
Sono LOCALI le variabili dichiarate in una funzione
global nomevariabile
attiva l'uso di una variabile definita esternamente
static $contatore=0
Dichiara una variabile locale assegnando un valore non reinizializzato nelle successive esecuzioni
Parametri di una funzione utente
Passati per valore es: function swap($a,$b) {…}O per riferimento es: function swap(&$a,&$b) {…}
Valore di default es: function swap($a,$b=0) {…}
Funzioni con numero variabile di argomenti:...func_num_args() e func_get_arg($i)
...esempio fattoriale e funzioni dinamiche
ArrayDichiarazioni di array:
$contatti [];
$nomi[0]=”Marcincus”;
$cd[]=”Metallica”;
$vocali=array(“a”,”e”,”i”,”o”,”u”);
$vocali[]=”y”;
...esempio array
Array associativi
Fondamentali in PHPNon usano numeri per puntare agli elementiUsano stringhe
$clienti[“nome”]=”Rossi Mario”;$clienti[“provincia”]=”Catania”;$clienti[“telefono”]=”095-454545”;
$cd=array(“Autore”=>”Springsteen”, “Titolo”=>”The River”, “Anno”=>1980);
Variabili predefinite Php
$_GET$_POST$GLOBALS$_SERVER…...$_SESSION
Le SessioniLa sessione è il modo più semplice per seguire un utente dal
momento in cui si collega a quando interrompe il collegamento internet.
Il server apre una sessione con la funzione session_start() e gli assegna un nome univoco.
Le variabili di sessione sono memorizzate in un array globale di nome $_SESSION[]
Deposita un cookie nella macchina dell'utente e ogni volta che ne ha bisogno, ne estrae i dati per risalire alla sessione e al file salvato.
Iniziare la sessione con session_start() prima di ogni altro output del server. NESSUNA funzione di uscita deve precederla, neppure il codice HTML!!
Session: funzioni e codici
session_start(); // apre una sessione
$_SESSION['nomevariabile']; //crea l'array globale che contiene tutte le variabili di sesssione.
session_unset(); //distrugge le variabili sessione.
session_destroy(); //distrugge una sessione
session_set_cookie_params(); //imposta i secondi di inattività oltre i quali la sessione è cancellata
Session: un esempio<?phpsession_start();//Recupero username e password dal form e li salvo$username = $_POST['user'];$password = $_POST['pass'];$_SESSION['username'] = $username;$_SESSION['password'] = $password;$_SESSION['view']=1;?><html>...<body>...<?phpecho "Pageviews=". $_SESSION['view']; //recupero session data?>
Session: l'esempio in una pagina successiva
<?php
session_start();
If (isset($_SESSION['views']))
$_SESSION['view']=$_SESSION['view']+1;
else
$_SESSION['view']=1;
echo "Views=". $_SESSION['view'];
?>
Invio dati da un form HTML
<form action=”http://127.0.0.1/mobile/registra.php” method=”post”>
Nominativo: <input type=”text” name=”nome”>
Email: <input type=”text” name=”email”>
Città: <input type=”text” name=”citta”>
<input type=”submit” value=”Invia”>
</form>
Ricezione dati
Il server riceverà i valori inviati dal form in un vettore di sistema chiamato $_REQUEST
$a=$_REQUEST[‘nome’];
$b=$_REQUEST[‘email’];
$c=$_REQUEST[‘citta’];
Esercizio - Client
Creare un form per
la selezione di una categoria di fornitori da una list box
Generare 2 numeri interi compresi tra 1 e 100 (longitudine e latitudine)
Inserimento/modifica dei numeri generati
Inserimento dell'email utente
Invio delle 4 informazioni a ricerca.php
Esercizio - Server
Leggere un file di testo “fornitori.txt”
Per i soli record con categoria uguale a quella selezionata dal Client calcolare la distanza minima tra le coordinante client e quelle del fornitore
Visualizzare i dati del fornitore piu' vicino alla posizione del client
MySQL
Potente database SQL
Utilizzato nella maggioranza dei siti dinamici sul web
Download dell'ultima versione dal sito Oracle
oppure download XAMPP
Perfettamente integrabile con Apache e Php
Panoramica Sql
Select - usata per interrogare 1 o più righe
Insert - usata nei nuovi inserimenti di riga
Update - usata per modificare 1 o più righe
Delete - usata per eliminare 1 o più righe
PDO: Connessione a server e DB
Esempio<?php
$c1=new PDO('mysql:host=localhost;dbname=rubri', $user, $pass);$c2=new PDO('mysql:host=localhost;dbname=cont‘,”ada”,”pww”);?>
$c3='mysql:host=localhost;dbname=rubrica';try {
$db = new PDO($c3 , 'username', 'password');}catch(PDOException $e) {
echo 'Attenzione: '.$e→getMessage();}
PDO: Interrogazione di un DB
$sql = "SELECT id, name FROM nodes";$rs=$con->query($sql);
echo '<br />';foreach($rs as $row){
echo $row['id']. "-";echo $row['name']. "<br>";
}
PDO: query con parametri
// preparazione della query $sql = $con->prepare("SELECT id, name FROM nodes
WHERE graph=:par1");$grafo=1;$sql→bindParam(':par1',$grafo,PDO::PARAM_INT);
//PDO::PARAM_STR, 3);$sql->execute();$rs=$sql->fetchAll();foreach($rs as $row){
echo $row['id']. "-";echo $row['name']. "<br>";
}
PDO: modifica e cancellazione
// Update all rows from the FRUIT table// Return number of rows that were updated$count = $dbh→exec("UPDATE fruit SET prize=0");print("Deleted $count rows.\n");
// Delete rows from the FRUIT table// Return number of rows that were deleted$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");print("Deleted $count rows.\n");
mysql: Interrogazione di un DB
$cs=mysql_connect(“localhost”, “marta”, “pippo”)si connette al server
mysql_select_db(“rubrica”, $cs)apre il database
mysql_close($cs);chiude la connessione
$recSet=mysql_query("select * from rubrica", $cs);esegue la query
$line=mysql_fetch_array($recSet)copia il record puntato in un array associativo
mysql_free_result($recSet);libera la memoria dal record set
mysql: Interrogazione di un DB
$cs=mysql_connect(“localhost”, “marta”, “pippo”)si connette al server
mysql_select_db(“rubrica”, $cs)apre il database
mysql_close($cs);chiude la connessione
$recSet=mysql_query("select * from rubrica", $cs);
while ($line=mysqli_fetch_array($recSet)) { echo $line['id']."-". $line["descrizione"]."<br />"; }
mysql: Inserimento riga in una tabella
$cs=mysql_connect(“localhost”, “pippo”, “miapassword”)si connette al server
mysql_select_db(“rubrica”, $cs)apre il database
mysql_close($cs);chiude la connessione
$recSet=mysql_query("insert into tabella (campo1,…) values (val1,...)", $cs);
mysql: Modifica righe in una tabella
$cs=mysql_connect(“localhost”, “pippo”, “miapassword”)si connette al server
mysql_select_db(“rubrica”, $cs)apre il database
mysql_close($cs);chiude la connessione
$recSet=mysql_query("update tabella set campo1=xxx, campo2=yyy...", $cs);
mysql: Eliminazione righe da tabella
$cs=mysql_connect(“localhost”, “pippo”, “miapassword”)si connette al server
mysql_select_db(“rubrica”, $cs)apre il database
mysql_close($cs);chiude la connessione
$recSet=mysql_query("Delete tabella where id=$_REQUEST['id']", $cs);
Top Related