SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
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…
<?php
echo “<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, $importo
Costanti
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”nr”
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 anche
print(“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
Array
Dichiarazioni di array:
$contatti [];
$nomi[0]=”Marcincus”;
$cd[]=”Metallica”;
$vocali=array(“a”,”e”,”i”,”o”,”u”);
$vocali[]=”y”;
...esempio array
Array associativi
Fondamentali in PHP
Non usano numeri per puntare agli elementi
Usano 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 Sessioni
La 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
<?php
session_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>...
<?php
echo "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”,”pw
w”);
?> 
$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);

Más contenido relacionado

La actualidad más candente

Ajax Primi Passi Per Iniziare
Ajax Primi Passi Per IniziareAjax Primi Passi Per Iniziare
Ajax Primi Passi Per Iniziare
astanco
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
Gianfranco Fedele
 
JAMP DAY 2010 - ROMA (4)
JAMP DAY 2010 - ROMA (4)JAMP DAY 2010 - ROMA (4)
JAMP DAY 2010 - ROMA (4)
jampslide
 

La actualidad más candente (20)

Php e mysql (primi passi)
Php e mysql (primi passi)Php e mysql (primi passi)
Php e mysql (primi passi)
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
 
Corso di php01
Corso di php01Corso di php01
Corso di php01
 
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2
 
PHP Template Engine (introduzione)
PHP Template Engine (introduzione)PHP Template Engine (introduzione)
PHP Template Engine (introduzione)
 
Ajax Primi Passi Per Iniziare
Ajax Primi Passi Per IniziareAjax Primi Passi Per Iniziare
Ajax Primi Passi Per Iniziare
 
Comandi bash
Comandi bashComandi bash
Comandi bash
 
Linux day 2016 la shell in linux
Linux day 2016   la shell in linuxLinux day 2016   la shell in linux
Linux day 2016 la shell in linux
 
breve introduzione a node.js
breve introduzione a node.jsbreve introduzione a node.js
breve introduzione a node.js
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
 
Javascript - 8 | WebMaster & WebDesigner
Javascript - 8 | WebMaster & WebDesignerJavascript - 8 | WebMaster & WebDesigner
Javascript - 8 | WebMaster & WebDesigner
 
local::lib
local::liblocal::lib
local::lib
 
Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1
 
Ajax Primi Passi Per Iniziare
Ajax Primi Passi Per IniziareAjax Primi Passi Per Iniziare
Ajax Primi Passi Per Iniziare
 
JAMP DAY 2010 - ROMA (4)
JAMP DAY 2010 - ROMA (4)JAMP DAY 2010 - ROMA (4)
JAMP DAY 2010 - ROMA (4)
 
Javascript
JavascriptJavascript
Javascript
 
Bash intro
Bash introBash intro
Bash intro
 
ZoeFX: un framework MVC per JavaFX
ZoeFX: un framework MVC per JavaFXZoeFX: un framework MVC per JavaFX
ZoeFX: un framework MVC per JavaFX
 
jQuery e i suoi plugin
jQuery e i suoi pluginjQuery e i suoi plugin
jQuery e i suoi plugin
 
Autenticazione delle api con jwt e symfony (Italian)
Autenticazione delle api con jwt e symfony (Italian)Autenticazione delle api con jwt e symfony (Italian)
Autenticazione delle api con jwt e symfony (Italian)
 

Destacado

Destacado (20)

Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi Operativi
 
Guida introduttiva al css
Guida introduttiva al cssGuida introduttiva al css
Guida introduttiva al css
 
Struttura di una pagina html
Struttura di una pagina htmlStruttura di una pagina html
Struttura di una pagina html
 
Html5 appunti.0
Html5   appunti.0Html5   appunti.0
Html5 appunti.0
 
HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerHTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesigner
 
Tecnologie informatiche
Tecnologie informaticheTecnologie informatiche
Tecnologie informatiche
 
Html5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webHtml5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo web
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi
 
Introduzione JQuery
Introduzione JQueryIntroduzione JQuery
Introduzione JQuery
 
Html5 - Un anno dopo
Html5 - Un anno dopoHtml5 - Un anno dopo
Html5 - Un anno dopo
 
Html e CSS ipertesti e siti web 4.5
Html e CSS   ipertesti e siti web 4.5Html e CSS   ipertesti e siti web 4.5
Html e CSS ipertesti e siti web 4.5
 
Guida introduttiva al codice HTML
Guida introduttiva al codice HTMLGuida introduttiva al codice HTML
Guida introduttiva al codice HTML
 
Html
HtmlHtml
Html
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
Offerte e budget adwords
Offerte e budget adwordsOfferte e budget adwords
Offerte e budget adwords
 
Le professioni del web: conosci queste opportunità?
Le professioni del web: conosci queste opportunità? Le professioni del web: conosci queste opportunità?
Le professioni del web: conosci queste opportunità?
 
Creazione siti web a roma
Creazione siti web a romaCreazione siti web a roma
Creazione siti web a roma
 
Ottimizzazione annunci adwords e adsense
Ottimizzazione annunci adwords e adsenseOttimizzazione annunci adwords e adsense
Ottimizzazione annunci adwords e adsense
 
Festa 18 anni Roma
Festa 18 anni RomaFesta 18 anni Roma
Festa 18 anni Roma
 

Similar a Php mysql3

Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacy
Tommaso Torti
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
Majong DevJfu
 

Similar a Php mysql3 (20)

Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacy
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
MongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBMongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDB
 
breve introduzione a node.js
breve introduzione a node.jsbreve introduzione a node.js
breve introduzione a node.js
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Progetto di Basi di Dati
Progetto di Basi di DatiProgetto di Basi di Dati
Progetto di Basi di Dati
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Yagwto
YagwtoYagwto
Yagwto
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
 
Html5 e PHP
Html5 e PHPHtml5 e PHP
Html5 e PHP
 
Linux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowToLinux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowTo
 
Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Seminario team working - 21-1-2015
Seminario team working - 21-1-2015
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8
 
SaaS con Symfony2
SaaS con Symfony2SaaS con Symfony2
SaaS con Symfony2
 

Último

Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 

Último (16)

Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 

Php mysql3

  • 1. Php e MySQL Ugo Rinaldi - 2010-2016 ugo.rinaldi@gmail.com
  • 2. 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
  • 3. A cosa vogliamo arrivare Php Mysql Php + Mysql >>> Applicazioni web dinamiche
  • 4. Pagine statiche Html = pagine statiche Javascript migliora molto la dinamicità client Necessario aggiornare contenuti e dati
  • 5. 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
  • 6. Cosa serve Xampp:  Download  Installazione  Prova Editor di testo Browser
  • 7. Dal server Php… <?php echo “<h1> Hello World! </h1>”; echo “<h3> Benvenuti nel corso di Sistemi Informativi </h3>”; ?>
  • 9. Iniziamo con Php Il tag per inserire codice php: <?php … ?> Per scrivere nella pagina: echo “Hello World!” Print(“......”) Nomi variabili: $a, $b, $importo Costanti define("COSTANTE", "Ciao mondo.");
  • 10. 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"; }
  • 11. Variabili Stringa $s=”Linkin Park”; print(“stringa = $s”); for ($i=0; $i<strlen($s); $i++) { print($s{$i}.“<br>”); }
  • 12. 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”nr”
  • 13. Operatori Operatori aritmetici + - * / % ++ – Operatori di assegnamento += -= *= /= %= &= Operatori relazionali == === < <=> >= != !== Operatori logici && AND || OR XOR ! $a%=$b equivale a $a=$a%$b
  • 14. Flusso di controllo if ($saldo==0) { …; } else { ...; } if ... elseif … else ...
  • 15. Operatore ternario Condizione ?cosa fare per vero ? Cosa fare per falso Esempio <p class=”<? echo (Riga%2 =0 ? "pari" : "dispari") ?> “>
  • 16. Flusso di controllo if ($saldo==0) { …; } else { ...; } if ... elseif … else ...
  • 17. 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!”; }
  • 18. 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>”); }
  • 19. 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
  • 20. try … catch (MyException $e) ... try { // istruzione che puo' causare errore } catch (Exception $e) { // istruzioni in caso di errore }
  • 21. Funzioni Per dichiarare la funzione function somma($a, $b) { $c=$a+$b; return $c; } per richiamarla $somma=somma($val1,$val2); Oppure anche print(“la somma e' : “.somma($val1,$val2).”<br>”);
  • 22. 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
  • 23. 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
  • 24. Array Dichiarazioni di array: $contatti []; $nomi[0]=”Marcincus”; $cd[]=”Metallica”; $vocali=array(“a”,”e”,”i”,”o”,”u”); $vocali[]=”y”; ...esempio array
  • 25. Array associativi Fondamentali in PHP Non usano numeri per puntare agli elementi Usano stringhe $clienti[“nome”]=”Rossi Mario”; $clienti[“provincia”]=”Catania”; $clienti[“telefono”]=”095-454545”; $cd=array(“Autore”=>”Springsteen”, “Titolo”=>”The River”, “Anno”=>1980);
  • 27. Le Sessioni La 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!!
  • 28. 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
  • 29. Session: un esempio <?php session_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>... <?php echo "Pageviews=". $_SESSION['view']; //recupero session data ?>
  • 30. 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']; ?>
  • 31. 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>
  • 32. 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’];
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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”,”pw w”); ?>  $c3='mysql:host=localhost;dbname=rubrica'; try { $db = new PDO($c3 , 'username', 'password');} catch(PDOException $e) {  echo 'Attenzione: '.$e→getMessage(); }
  • 38. 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>"; }
  • 39. 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>"; }
  • 40. 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");
  • 41. 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
  • 42. 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 />"; }
  • 43. 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);
  • 44. 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);
  • 45. 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);