Php mysql3

45
Php e MySQL Ugo Rinaldi - 2010-2016 [email protected]

Transcript of Php mysql3

Page 1: Php mysql3

Php e MySQL

Ugo Rinaldi - 2010-2016

[email protected]

Page 2: Php mysql3

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

Page 3: Php mysql3

A cosa vogliamo arrivare

Php

Mysql

Php + Mysql >>> Applicazioni web dinamiche

Page 4: Php mysql3

Pagine statiche

Html = pagine statiche

Javascript migliora molto la dinamicità client

Necessario aggiornare contenuti e dati

Page 5: Php mysql3

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

Page 6: Php mysql3

Cosa serve

Xampp: Download

Installazione

Prova

Editor di testo

Browser

Page 7: Php mysql3

Dal server Php…

<?phpecho “<h1> Hello World! </h1>”;

echo “<h3> Benvenuti nel corso di Sistemi Informativi </h3>”;?>

Page 8: Php mysql3

…al Client

Page 9: Php mysql3

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.");

Page 10: Php mysql3

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"; }

Page 11: Php mysql3

Variabili Stringa

$s=”Linkin Park”;

print(“stringa = $s”);

for ($i=0; $i<strlen($s); $i++) {

print($s{$i}.“<br>”);

}

Page 12: Php mysql3

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”

Page 13: Php mysql3

Operatori

Operatori aritmetici+ - * / % ++ –Operatori di assegnamento+= -= *= /= %= &=Operatori relazionali== === < <= > >= != !==Operatori logici&& AND || OR XOR !

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

Page 14: Php mysql3

Flusso di controllo

if ($saldo==0) {

…;

} else {

...;

}

if ... elseif … else ...

Page 15: Php mysql3

Operatore ternario

Condizione ?cosa fare per vero ? Cosa fare per falso

Esempio

<p class=”<? echo (Riga%2 =0 ? "pari" : "dispari") ?> “>

Page 16: Php mysql3

Flusso di controllo

if ($saldo==0) {

…;

} else {

...;

}

if ... elseif … else ...

Page 17: Php mysql3

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!”;

}

Page 18: Php mysql3

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>”);

}

Page 19: Php mysql3

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

Page 20: Php mysql3

try … catch (MyException $e) ...

try {

// istruzione che puo' causare errore

} catch (Exception $e) {

// istruzioni in caso di errore

}

Page 21: Php mysql3

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>”);

Page 22: Php mysql3

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

Page 23: Php mysql3

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

Page 24: Php mysql3

ArrayDichiarazioni di array:

$contatti [];

$nomi[0]=”Marcincus”;

$cd[]=”Metallica”;

$vocali=array(“a”,”e”,”i”,”o”,”u”);

$vocali[]=”y”;

...esempio array

Page 25: Php mysql3

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);

Page 26: Php mysql3

Variabili predefinite Php

$_GET$_POST$GLOBALS$_SERVER…...$_SESSION

Page 27: Php mysql3

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

Page 28: Php mysql3

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

Page 29: Php mysql3

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?>

Page 30: Php mysql3

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'];

?>

Page 31: Php mysql3

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&agrave: <input type=”text” name=”citta”>

<input type=”submit” value=”Invia”>

</form>

Page 32: Php mysql3

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’];

Page 33: Php mysql3

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

Page 34: Php mysql3

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

Page 35: Php mysql3

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

Page 36: Php mysql3

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

Page 37: Php mysql3

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();}

Page 38: Php mysql3

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>";

}

Page 39: Php mysql3

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>";

}

Page 40: Php mysql3

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");

Page 41: Php mysql3

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

Page 42: Php mysql3

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 />"; }

Page 43: Php mysql3

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);

Page 44: Php mysql3

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);

Page 45: Php mysql3

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);