Php mysql3

Post on 12-Apr-2017

107 views 0 download

Transcript of Php mysql3

Php e MySQL

Ugo Rinaldi - 2010-2016

ugo.rinaldi@gmail.com

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&agrave: <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);