Utilizzare PHP 5 Corso Interazione Uomo – Macchina AA 2005/2006.

Slides:



Advertisements
Presentazioni simili
UNO STRUMENTO PER INTERAGIRE CON GLI UTENTI DELLE PAGINE WEB
Advertisements

Gli ipertesti del World Wide Web Funzionamento e tecniche di realizzazione a cura di Loris Tissìno (
CORSO DI SICUREZZA SU RETI II PROF. A. DE SANTIS ANNO 2006/07 Informatica granata Gruppo 2 ISP Gruppo 3 ISP.
DBMS (DataBase Management System)
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
PHP.
Installazione di Apache 2, PHP5, MySQL 5
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Che cosè? Che cosè? Che cosè? Che cosè? Come creare una pagina… Come creare una pagina… Come creare una pagina… Come creare una pagina… inserire testi,immagini,tabelle…
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Connessione con MySQL.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Interazione tra basi di dati e web
Modulo o Form in Html.
1 HTML - I Frame Laboratorio di Applicazioni Informatiche II mod. A.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Esercitazione 5 MySQL Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Esercitazione 6 MySQL Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Esercitazione 3 Mantenimento dello stato, cookies, sessioni
CORSO DI INFORMATICA LAUREA TRIENNALE-COMUNICAZIONE & DAMS
PHP – Un’introduzione Linguaggi e Traduttori 2003 Facoltà di Economia
SIMULAZIONE RETE INTERNET INTERNET SERVICE PROVIDER GRUPPO 2 COMMESSA – INFORMATICA GRANATA Corso Sicurezza su Reti II Prof. A. De Santis Anno Accademico.
PHP PHP Hypertext Preprocessor
Il linguaggio ASP Lezione 4 Manipolare i database con ASP Lutilizzo dei FORM per laggiunta dei dati.
Il linguaggio ASP Lezione 3 La connessione al database con ASP
Lezione 2 Programmare in ASP
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net Web Part e controlli di login Elaborazione di Franco Grivet Chin.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Corso di PHP.
DBMS ( Database Management System)
Ing. Enrico Lecchini BetaTre S.r.l.
Modulo 7 – reti informatiche u.d. 1 (syllabus – )
Guida IIS 6 A cura di Nicola Del Re.
Riservato Cisco 1 © 2010 Cisco e/o i relativi affiliati. Tutti i diritti sono riservati.
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Sistemi Informativi sul Web
Creare pagine web Xhtlm. Struttura di una pagina.
Basi di Dati e Sistemi Informativi
Internet Explorer I preferiti Stampa di pagine web Salvataggio di pagine web Copia di elementi di pagine web in altri applicativi.
Presentazione Data Base Ovvero: il paradigma LAPM (Linux - Apache - PHP - mySQL) come supporto Open Source ad un piccolo progetto di Data Base relazionale,
BIOINFO3 - Lezione 341 INTERAZIONE CON UN SERVER MYSQL Quando abbiamo parlato dei database relazionali SQL vi avevo già accennato che linterazione (invio.
BIOINFO3 - Lezione 101 GLI IPERTESTI Una delle innovazioni introdotte da HTML e dal WWW in generale, rispetto ad un testo normale è sicuramente la possibilità
BIOINFO3 - Lezione 111 CGI-BIN CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. Il server web (httpd) della.
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
Amministrazione della rete: web server Apache
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
Applicazione Web Informatica Abacus Informatica Classe VIA 2008/2009 N.Ceccon INF (01) Revisione 4.0 settembre 2008.
Web Form Presentazione 2.3 Comunicazione integrata in rete| Prof. Luca A. Ludovico.
Lezione 8.
Pagine ASP parte 3 I data base Stefano Schacherl.
Fabrizio Felici LAMP workshop GROsseto Linux Users Group.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Tag FRAMESET. I frame sono un particolare tipo di struttura HTML, che consente di suddividere la finestra del browser in diversi riquadri distinti. Un'insieme.
IV D Mercurio DB Lezione 2
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
MySQL Database Management System
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
PHP MySQL Accesso a database via web. Connessione Script PHP per la connessione a un server MySQL mysql_connect(nomeServer,nomeUtente,password);
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 -Protocolli del Web Ernesto Damiani Lezione 1 – World Wide.
Università degli Studi G.D’Annunzio (Pe) Corso di Laurea Specialistica in Eco.Informatica.
Servizi Internet Claudia Raibulet
Tecnologie lato Server: i Server Web © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
Lezione 6: Form.  In alcuni documenti HTML può essere utile creare dei moduli (form) che possono essere riempiti da chi consulta le pagine stesse (es.
Eprogram informatica V anno.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Gaetano Anastasi Beatrice Miotti Lorenzo Guerriero Monica Pellegrinelli Massimiliano Sartor Giorgio Macauda SQLite Esempi di utilizzo della libreria in.
ASP – Active Server Pages - 1 -Giuseppe Tandoi ASP – Active Server Pages Tecnologia per lo sviluppo di pagine dinamiche.
Transcript della presentazione:

Utilizzare PHP 5 Corso Interazione Uomo – Macchina AA 2005/2006

Le variabili GET e POST La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti. La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti. Questa possibilità si materializza attraverso i meccanismi che permettono agli utenti, oltre che di richiedere una pagina ad un web server, anche di specificare determinati parametri che saranno utilizzati dallo script PHP per determinare quali contenuti la pagina dovrà mostrare Questa possibilità si materializza attraverso i meccanismi che permettono agli utenti, oltre che di richiedere una pagina ad un web server, anche di specificare determinati parametri che saranno utilizzati dallo script PHP per determinare quali contenuti la pagina dovrà mostrare Esistono due sistemi per passare dati ad uno script: Esistono due sistemi per passare dati ad uno script: –Metodo GET –Metodo POST

Il metodo GET Il metodo GET consiste nell'accodare i dati all'indirizzo della pagina richiesta, facendo seguire il nome della pagina da un punto interrogativo e dalle coppie nome/valore dei dati che ci interessano. Nome e valore sono separati da un segno di uguale. Le diverse coppie nome/valore sono separate dal segno '& Il metodo GET consiste nell'accodare i dati all'indirizzo della pagina richiesta, facendo seguire il nome della pagina da un punto interrogativo e dalle coppie nome/valore dei dati che ci interessano. Nome e valore sono separati da un segno di uguale. Le diverse coppie nome/valore sono separate dal segno '& La stringa che si trova dopo il punto interrogativo, contenente nomi e valori dei parametri, viene detta query string La stringa che si trova dopo il punto interrogativo, contenente nomi e valori dei parametri, viene detta query string

Accesso ai dati GET Quando una pagina è utilizzata con il metodo GET, essa avrà a disposizione, al suo interno un array denominato $_GET che è un array superglobale in quanto è disponibile anche all'interno delle funzioni Quando una pagina è utilizzata con il metodo GET, essa avrà a disposizione, al suo interno un array denominato $_GET che è un array superglobale in quanto è disponibile anche all'interno delle funzioni Nellesempio precedente avremo a disposizione Nellesempio precedente avremo a disposizione –$_GET['cod'] (con valore 'a7') –$_GET['cat'] (con valore '2')

Il metodo POST Il metodo POST è utilizzato con i moduli: quando una pagina HTML contiene un tag, uno dei suoi attributi è "method", che può valere GET o POST. Se il metodo è GET, i dati vengono passati nella query string, come abbiamo visto prima. Se il metodo è POST, i dati vengono invece inviati al server mediante lo standard input di questo Il metodo POST è utilizzato con i moduli: quando una pagina HTML contiene un tag, uno dei suoi attributi è "method", che può valere GET o POST. Se il metodo è GET, i dati vengono passati nella query string, come abbiamo visto prima. Se il metodo è POST, i dati vengono invece inviati al server mediante lo standard input di questo

Accesso ai dati POST Quando una pagina è utilizzata con il metodo POST i dati che vengono passati sono memorizzati nell'array $_POST. Anche questo array, come $_GET, è un array superglobale Quando una pagina è utilizzata con il metodo POST i dati che vengono passati sono memorizzati nell'array $_POST. Anche questo array, come $_GET, è un array superglobale Nellesempio precedente avremo a disposizione: Nellesempio precedente avremo a disposizione: –$_POST['nome'] –$_POST['nuovo']

Cookies Come ogni buon linguaggio legato alla generazione dinamica di pagine web, anche il PHP consente di gestire i Cookies: piccoli file di testo contenenti informazioni utili e non dannose per la gestione delle sessioni sul web Come ogni buon linguaggio legato alla generazione dinamica di pagine web, anche il PHP consente di gestire i Cookies: piccoli file di testo contenenti informazioni utili e non dannose per la gestione delle sessioni sul web Le funzioni relative ai Cookies sono interne al PHP stesso, differentemente da come avviene per altri linguaggi, Perl su tutti Le funzioni relative ai Cookies sono interne al PHP stesso, differentemente da come avviene per altri linguaggi, Perl su tutti

Vediamo di chiarire le opzioni che si possono passare alla funzione: Nome: è il nome del cookie, che può essere arbitrariamente scelto Nome: è il nome del cookie, che può essere arbitrariamente scelto Valore: è il valore, anch'esso arbitrario, da assegnare al cookie Valore: è il valore, anch'esso arbitrario, da assegnare al cookie Espirazione: è la data di espirazione del cookie Espirazione: è la data di espirazione del cookie Percorso: è la directory, a partire dal dominio (vedi sotto) per la quale il cookie è valido Percorso: è la directory, a partire dal dominio (vedi sotto) per la quale il cookie è valido Dominio: è il dominio per il quale il dominio è valido Dominio: è il dominio per il quale il dominio è valido Secure: è un valore che imposta se il cookie debba essere inviato tramite una connessione HTTPS Secure: è un valore che imposta se il cookie debba essere inviato tramite una connessione HTTPS Cookies: setcookie() setcookie(Nome,Valore,Espirazione,Percorso,Dominio,Secure);

Cookies: leggere La lettura dei Cookies avviene mediante la variabile pre-assegnata: La lettura dei Cookies avviene mediante la variabile pre-assegnata: –$HTTP_COOKIE_VARS (tipo array) Mediante la variabile è possibile accedere a tutti i Cookies creati nel nostro browser Mediante la variabile è possibile accedere a tutti i Cookies creati nel nostro browser Per accedere ad un particolare Cookie è necessario passare come indice dellarray il nome del Cookie creato Per accedere ad un particolare Cookie è necessario passare come indice dellarray il nome del Cookie creato

Cookies: leggere setcookie("Test", "Prova per il cookie Test", time()+60); Creare un cookie: Creare un cookie: Leggere un cookie: Leggere un cookie: $nome = "Test"; $valore = $HTTP_COOKIE_VARS[$nome]; echo " Nome del cookie: $nome Valore: $valore "; $nome = "Test"; $valore = $HTTP_COOKIE_VARS[$nome]; echo " Nome del cookie: $nome Valore: $valore "; Leggere tutti i cookies: Leggere tutti i cookies: while (list($nome,$valore)=each($HTTP_COOKIE_VARS)) { echo " Nome del cookie: $nome - Valore: $valore "; } while (list($nome,$valore)=each($HTTP_COOKIE_VARS)) { echo " Nome del cookie: $nome - Valore: $valore "; }

Cookies: esempio SETCOOKIE.PHP <?php if (setcookie("Test","Prova per il cookie Test",time()+60)){ echo "Cookie Impostato"; } else { echo "Cookie non impostato"; } ?> … Clicca qui … SETCOOKIE.PHP <?php if (setcookie("Test","Prova per il cookie Test",time()+60)){ echo "Cookie Impostato"; } else { echo "Cookie non impostato"; } ?> … Clicca qui … READCOOKIE.PHP <?php $nome = "Test"; $valore = $HTTP_COOKIE_VARS[$nome]; echo " Nome del cookie: $nome Valore: $valore "; ?> READCOOKIE.PHP <?php $nome = "Test"; $valore = $HTTP_COOKIE_VARS[$nome]; echo " Nome del cookie: $nome Valore: $valore "; ?>

Le sessioni La gestione delle sessioni è una delle novità più importanti introdotte dalla versione 4 di PHP. Essa infatti ci permette di stabilire un "dialogo" con l'utente del sito web, superando uno dei limiti del protocollo HTTP, che è quello di "non avere stato La gestione delle sessioni è una delle novità più importanti introdotte dalla versione 4 di PHP. Essa infatti ci permette di stabilire un "dialogo" con l'utente del sito web, superando uno dei limiti del protocollo HTTP, che è quello di "non avere stato La normale navigazione può avvenire senza il loro utilizzo La normale navigazione può avvenire senza il loro utilizzo Ma ad esempio in un sistema di e-commerce, nel quale l'utente prima riempie un carrello scegliendo una serie di prodotti, poi viene portato sulla schermata che gli consente di effettuare il pagamento. Quando è il momento di effettuare il pagamento il sistema deve "sapere" quali sono i prodotti che l'utente ha scelto Ma ad esempio in un sistema di e-commerce, nel quale l'utente prima riempie un carrello scegliendo una serie di prodotti, poi viene portato sulla schermata che gli consente di effettuare il pagamento. Quando è il momento di effettuare il pagamento il sistema deve "sapere" quali sono i prodotti che l'utente ha scelto Un altro esempio, più semplice, è quello dei siti con aree riservate: se un certo numero di pagine è visibile solo agli utenti registrati, questi dovranno presentarsi per poterle vedere, ma una volta effettuata la presentazione (login) dovranno essere messi in grado di vedere tutte le pagine dell'area riservata, senza, ovviamente, doversi ripresentare per ciascuna pagina Un altro esempio, più semplice, è quello dei siti con aree riservate: se un certo numero di pagine è visibile solo agli utenti registrati, questi dovranno presentarsi per poterle vedere, ma una volta effettuata la presentazione (login) dovranno essere messi in grado di vedere tutte le pagine dell'area riservata, senza, ovviamente, doversi ripresentare per ciascuna pagina

Le sessioni: funzionamento Con le sessioni è possibile associare uno stato ad ogni client e mantenerlo nell'arco di più accessi Con le sessioni è possibile associare uno stato ad ogni client e mantenerlo nell'arco di più accessi Il mantenimento di una sessione richiede la collaborazione di client (il browser) e server. Tutte le informazioni della sessione sono sul server Il mantenimento di una sessione richiede la collaborazione di client (il browser) e server. Tutte le informazioni della sessione sono sul server Il server codifica (serializzazione) le informazioni di sessione per la memorizzazione su file o database, e le ripristina alla successiva richiesta dello stesso client Il server codifica (serializzazione) le informazioni di sessione per la memorizzazione su file o database, e le ripristina alla successiva richiesta dello stesso client Il client deve fornire al server le informazioni per associare alla richiesta la sessione corrispondente Il client deve fornire al server le informazioni per associare alla richiesta la sessione corrispondente Ciò è reso possibile da un identificativo di sessione (SID, session identifier) univoco generato allavvio di una nuova sessione Ciò è reso possibile da un identificativo di sessione (SID, session identifier) univoco generato allavvio di una nuova sessione

Le sessioni: implementazione La problematica principale riguardo le sessioni, è la propagazione del SID. Le tecniche di propagazione sono tramite cookies e tramite URL La problematica principale riguardo le sessioni, è la propagazione del SID. Le tecniche di propagazione sono tramite cookies e tramite URL Grazie ad un cookie l'identificativo di sessione viene memorizzato sul browser, diventando accessibile in PHP Grazie ad un cookie l'identificativo di sessione viene memorizzato sul browser, diventando accessibile in PHP Non e sufficientemente affidabile; il visitatore, potrebbe aver configurato il proprio browser con i cookie disabilitati Non e sufficientemente affidabile; il visitatore, potrebbe aver configurato il proprio browser con i cookie disabilitati La propagazione tramite URL è del tutto identica al passaggio di parametri con il metodo GET La propagazione tramite URL è del tutto identica al passaggio di parametri con il metodo GET Si tratta di modificare i link alle varie pagine PHP in modo che contengano, nella parte di query string, il valore della costante SID Si tratta di modificare i link alle varie pagine PHP in modo che contengano, nella parte di query string, il valore della costante SID... ">Clicca qui per propagare la sessione ">Clicca qui per propagare la sessione......

Le sessioni: funzioni PHP Le funzioni PHP per la gestione delle sessioni sono: Le funzioni PHP per la gestione delle sessioni sono: – session_start(), crea una nuova sessione o la ripristina se esistente – session_register(), registra variabili come variabili di sessione – session_destroy(), distrugge una sessione, liberando le risorse L'interprete PHP verifica, in base ai cookie e ai parametri nella URL, se è stato fornito un identificativo (SID) di una sessione L'interprete PHP verifica, in base ai cookie e ai parametri nella URL, se è stato fornito un identificativo (SID) di una sessione In caso affermativo provvede a ripristinare la sessione corrispondente diversamente ne avvia una nuova In caso affermativo provvede a ripristinare la sessione corrispondente diversamente ne avvia una nuova Affinché session_start() possa impostare il cookie contenente il SID, dovrà essere invocata prima che loutput sia inviato al browser Affinché session_start() possa impostare il cookie contenente il SID, dovrà essere invocata prima che loutput sia inviato al browser A questo punto qualsiasi variabile può essere resa variabile di sessione, tramite la funzione session_register() A questo punto qualsiasi variabile può essere resa variabile di sessione, tramite la funzione session_register()

Le sessioni: un esempio (session_cookie.php) <?php session_start(); if (!session_is_registered('contatore')) { session_register('contatore'); $_SESSION[contatore] = 1; } else { $_SESSION[contatore]++; } ?> Sessioni <?php echo " Ciao, Hai visto questa pagina $_SESSION[contatore] volte. "; echo "Per continuare, clicca qui "; ?> <?php session_start(); if (!session_is_registered('contatore')) { session_register('contatore'); $_SESSION[contatore] = 1; } else { $_SESSION[contatore]++; } ?> Sessioni <?php echo " Ciao, Hai visto questa pagina $_SESSION[contatore] volte. "; echo "Per continuare, clicca qui "; ?>

<?php session_start(); if (!session_is_registered('contatore')) { session_register('contatore'); $_SESSION[contatore] = 1; } else { $_SESSION[contatore]++; } ?> Sessioni <?php echo " Ciao, Hai visto questa pagina $_SESSION[contatore] volte. "; echo "Per continuare, clicca qui "; ?> <?php session_start(); if (!session_is_registered('contatore')) { session_register('contatore'); $_SESSION[contatore] = 1; } else { $_SESSION[contatore]++; } ?> Sessioni <?php echo " Ciao, Hai visto questa pagina $_SESSION[contatore] volte. "; echo "Per continuare, clicca qui "; ?> Le sessioni: un esempio (session_url.php)

Le sessioni: output

Utilizzare un database La possibilità di interagire con i database è una delle potenzialità più interessanti offerte da PHP La possibilità di interagire con i database è una delle potenzialità più interessanti offerte da PHP I database relazionali sono infatti lo strumento universalmente utilizzato per conservare basi di dati di qualsiasi dimensione I database relazionali sono infatti lo strumento universalmente utilizzato per conservare basi di dati di qualsiasi dimensione PHP ci dà la possibilità di connetterci con un numero elevatissimo di database server (MySql, PostgreSql, Oracle, Access, Sybase, Informix, mSql ecc.) PHP ci dà la possibilità di connetterci con un numero elevatissimo di database server (MySql, PostgreSql, Oracle, Access, Sybase, Informix, mSql ecc.) Linterazione con un database è il seguente: Linterazione con un database è il seguente: –Collegamento al database –Scelta del catalogo del database sul quale lavorare –Esecuzione di query (creazione, interrogazione, cancellazione) –Chiusura del collegamento al database

Interazione con MySQL L'interazione viene ottenuta attraverso una serie di funzioni, il cui nome inizia sempre per "mysql" seguito da un underscore e dall'indicazione specifica della funzione L'interazione viene ottenuta attraverso una serie di funzioni, il cui nome inizia sempre per "mysql" seguito da un underscore e dall'indicazione specifica della funzione Per chi avesse la necessità di utilizzare un database di tipo diverso, diciamo subito che buona parte di queste funzioni ha delle funzioni corrispondenti, relative agli altri tipi di database, che si differenziano in base al prefisso nel nome (ad esempio "pg" per PostgreSql, "ora" per Oracle, "mssql" per Sql Server, etc.) Per chi avesse la necessità di utilizzare un database di tipo diverso, diciamo subito che buona parte di queste funzioni ha delle funzioni corrispondenti, relative agli altri tipi di database, che si differenziano in base al prefisso nel nome (ad esempio "pg" per PostgreSql, "ora" per Oracle, "mssql" per Sql Server, etc.)

Connessione al database La connessione si realizza attraverso la funzione mysql_connect. Che necessita dei seguenti parametri: La connessione si realizza attraverso la funzione mysql_connect. Che necessita dei seguenti parametri: –server : lURL del database –utente : nome di accesso –password : password dellutente mysql_connect(server, utente, password);

Scelta del database Una volta stabilita la connessione, il passo successivo è selezionare il database col quale vogliamo lavorare. Per questo si usa la funzione mysql_select_db che necessita dei seguenti parametri: Una volta stabilita la connessione, il passo successivo è selezionare il database col quale vogliamo lavorare. Per questo si usa la funzione mysql_select_db che necessita dei seguenti parametri: –nomedb: il nome del db al quale vogliamo connetterci –connessione: l'identificativo di connessione (cioè quello che abbiamo ottenuto da mysql_connect) Questa funzione restituisce un valore booleano Questa funzione restituisce un valore booleano mysql_select_db(nomedb,connessione);

Esecuzione di una query Siamo quindi arrivati alla parte fondamentale del colloquio con un database, cioè l'esecuzione di una query. Per eseguire la query si usa la funzione mysql_query i cui parametri sono: Siamo quindi arrivati alla parte fondamentale del colloquio con un database, cioè l'esecuzione di una query. Per eseguire la query si usa la funzione mysql_query i cui parametri sono: –query: query da eseguire –connessione: identificativo di connessione Anche questa funzione restituisce un valore, per il quale però dobbiamo distinguere due possibilità rispetto al tipo di query che abbiamo lanciato: Anche questa funzione restituisce un valore, per il quale però dobbiamo distinguere due possibilità rispetto al tipo di query che abbiamo lanciato: –query di interrogazione (SELECT, SHOW, EXPLAIN, DESCRIBE), la funzione restituisce un identificativo del risultato (cioè un'altra variabile di tipo resource), che ci servirà successivamente, se la query è andata a buon fine; se invece MySql ha rilevato degli errori, la funzione restituisce FALSE –query di aggiornamento (INSERT, UPDATE, DELETE), la funzione restituirà in ogni caso un valore booleano, ad indicare se l'esecuzione è andata a buon fine oppure no

Verifica dei risultati della query Il fatto che una query sia stata eseguita correttamente non significa necessariamente che abbia prodotto dei risultati. Può infatti verificarsi il caso in cui una query, pur essendo perfettamente corretta, non produce alcun risultato Il fatto che una query sia stata eseguita correttamente non significa necessariamente che abbia prodotto dei risultati. Può infatti verificarsi il caso in cui una query, pur essendo perfettamente corretta, non produce alcun risultato Se vogliamo sapere quante righe sono state restituite da una SELECT, possiamo usare la funzione mysql_num_rows(risultato), che ci restituisce il numero di righe contenute dall'identificativo del risultato che le passiamo. Se vogliamo sapere quante righe sono state restituite da una SELECT, possiamo usare la funzione mysql_num_rows(risultato), che ci restituisce il numero di righe contenute dall'identificativo del risultato che le passiamo. Se invece abbiamo eseguito una query di aggiornamento (INSERT, UPDATE, DELETE) e vogliamo sapere quante righe sono state modificate, possiamo usare mysql_affected_rows(connessione), che ci restituisce il numero di righe modificate dall'ultima query di aggiornamento Se invece abbiamo eseguito una query di aggiornamento (INSERT, UPDATE, DELETE) e vogliamo sapere quante righe sono state modificate, possiamo usare mysql_affected_rows(connessione), che ci restituisce il numero di righe modificate dall'ultima query di aggiornamento

Lettura dei risultati di una SELECT Come abbiamo visto prima, una volta effettuata una query di interrogazione abbiamo a disposizione un identificativo del suo risultato. Per poter leggere questo risultato possiamo utilizzare la funzione mysql_fetch_array(risultato), la quale, ogni volta che viene chiamata, ci restituisce una riga (array) del nostro risultato; quando non ci sono più righe da leggere, la funzione restituisce FALSE Come abbiamo visto prima, una volta effettuata una query di interrogazione abbiamo a disposizione un identificativo del suo risultato. Per poter leggere questo risultato possiamo utilizzare la funzione mysql_fetch_array(risultato), la quale, ogni volta che viene chiamata, ci restituisce una riga (array) del nostro risultato; quando non ci sono più righe da leggere, la funzione restituisce FALSE Quindi, per scorrere tutto il risultato, dovremo usare questa funzione come condizione di un ciclo, che si concluderà quando restituisce FALSE (in questo modo non abbiamo bisogno di sapere a priori quante sono le righe contenute nel risultato stesso) Quindi, per scorrere tutto il risultato, dovremo usare questa funzione come condizione di un ciclo, che si concluderà quando restituisce FALSE (in questo modo non abbiamo bisogno di sapere a priori quante sono le righe contenute nel risultato stesso) $query = 'SELECT * FROM tabella'; $ris = mysql_query($query,$conn) or die("Errore nella query: ". mysql_error()); while($riga = mysql_fetch_array($ris)) { //codice che elabora i dati } $query = 'SELECT * FROM tabella'; $ris = mysql_query($query,$conn) or die("Errore nella query: ". mysql_error()); while($riga = mysql_fetch_array($ris)) { //codice che elabora i dati }

Chiusura connessione Rimane da citare la funzione mysql_close accetta come parametro Rimane da citare la funzione mysql_close accetta come parametro –connessione: puntatore alla connessione aperta con mysql_connect() In pratica questa funzione è usata pochissimo, in quanto PHP si preoccupa da solo, al termine dello script, di chiudere le connessioni che abbiamo aperto In pratica questa funzione è usata pochissimo, in quanto PHP si preoccupa da solo, al termine dello script, di chiudere le connessioni che abbiamo aperto

Esempio di utilizzo PHP - MySQL Creiamo un applicativo che consenta di Creiamo un applicativo che consenta di –Creare la struttura del database –Inserire dati nelle tabelle create –Visualizzare tutti i dati inseriti –Visualizzare un dato in particolare Realizzeremo il sistema mediante i seguenti file: Realizzeremo il sistema mediante i seguenti file: –config.inc.php: configurazione del sistema –install.php: creazione del database –insert.php: form per linserimento dei dati –save.php: salvataggio dei dati nel database –index.php: visualizzazione di tutti i dati del database –view.php: visualizzazione completamente di un prodotto

Es: Configurazione del sistema (config.inc.php) Prima di tutto avremo bisogno di alcune informazioni relative all'accesso al database e altre relative allapplicazione: Prima di tutto avremo bisogno di alcune informazioni relative all'accesso al database e altre relative allapplicazione: –db_host da cui si può raggiungere MySQL (localhost) –db_user e db_password per l'accesso al database –db_nome del database –password per la verifica dellutente che esegue linserimento CONFIG.INC.PHP //parametri del database $db_host = "localhost"; $db_user = "root"; $db_password = "prova"; $db_name = "test"; $password = "super"; CONFIG.INC.PHP //parametri del database $db_host = "localhost"; $db_user = "root"; $db_password = "prova"; $db_name = "test"; $password = "super";

Es: Connessione e creazione del database (install.php) INSTALL.PHP include("config.inc.php"); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE){ die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); } else{ mysql_select_db($db_name, $db) or die ("Errore selezione database. Verificare i parametri nel file config.inc.php"); $query = "CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR (255) not null, testo TEXT not null, data INT (11), autore VARCHAR (50), mail VARCHAR (50), PRIMARY KEY (id))"; if (mysql_query($query, $db)) echo "L'installazione è stata eseguita correttamente"; else echo "Errore durante l'installazione"; } INSTALL.PHP include("config.inc.php"); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE){ die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); } else{ mysql_select_db($db_name, $db) or die ("Errore selezione database. Verificare i parametri nel file config.inc.php"); $query = "CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR (255) not null, testo TEXT not null, data INT (11), autore VARCHAR (50), mail VARCHAR (50), PRIMARY KEY (id))"; if (mysql_query($query, $db)) echo "L'installazione è stata eseguita correttamente"; else echo "Errore durante l'installazione"; } Effettuiamo la connessione al server database e scegliamo il database sul quale lavorare e creiamo una tabella sulla quale lavoreremo Effettuiamo la connessione al server database e scegliamo il database sul quale lavorare e creiamo una tabella sulla quale lavoreremo

Es: Form di inserimento dati (insert.php) INSERT.PHP Titolo: Data: <?php for ($i=1; $i $i"; ?> Gennaio Febbraio Marzo Aprile … INSERT.PHP Titolo: Data: <?php for ($i=1; $i $i"; ?> Gennaio Febbraio Marzo Aprile … … Autore: Testo: Password: … Autore: Testo: Password:

SAVE.PHP include("config.inc.php"); if ($_POST[pass] != $password){ echo "Password errata"; } elseif (trim($_POST[titolo]) == "" OR trim($_POST[testo]) == ""){ echo "I campi Titolo e Testo devono essere riempiti!"; } else{ $titolo = $_POST[titolo])); $autore = $_POST[autore])); $mail = $_POST[mail])); $testo = $_POST[testo])); $data = mktime("0", "0", "0",$_POST[mese],$_POST[giorno],$_POST[anno]); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); $query = "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')"; if (mysql_query($query, $db)) echo "L'articolo è stato inserito correttamente"; else echo "Erorre durante l'inserimento"; } SAVE.PHP include("config.inc.php"); if ($_POST[pass] != $password){ echo "Password errata"; } elseif (trim($_POST[titolo]) == "" OR trim($_POST[testo]) == ""){ echo "I campi Titolo e Testo devono essere riempiti!"; } else{ $titolo = $_POST[titolo])); $autore = $_POST[autore])); $mail = $_POST[mail])); $testo = $_POST[testo])); $data = mktime("0", "0", "0",$_POST[mese],$_POST[giorno],$_POST[anno]); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); $query = "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')"; if (mysql_query($query, $db)) echo "L'articolo è stato inserito correttamente"; else echo "Erorre durante l'inserimento"; } Es: Salvataggio dati nel database (save.php)

Es: Lettura di un indice dei dati dal database (index.php) INDEX.PHP include("config.inc.php"); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); $query = "SELECT id,data,titolo FROM news ORDER BY data DESC $result = mysql_query($query, $db); while ($row = mysql_fetch_array($result)){ echo " ". date("j/n/y", $row[data]). " - $row[titolo] "; } INDEX.PHP include("config.inc.php"); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); $query = "SELECT id,data,titolo FROM news ORDER BY data DESC $result = mysql_query($query, $db); while ($row = mysql_fetch_array($result)){ echo " ". date("j/n/y", $row[data]). " - $row[titolo] "; }

Es: Lettura di un particolare dato (view.php) VIEW.PHP include("config.inc.php"); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); $query = "SELECT titolo,testo,data,autore,mail FROM news WHERE id='$_GET[id]'"; $result = mysql_query($query, $db); $row = mysql_fetch_array($result); $data = date("j/n/y", $row[data]); echo " $row[titolo] "; echo "$row[testo] "; if ($row[mail] != "") echo "$data, $row[autore] "; else echo "$data, $row[autore] "; echo " Torna alla pagina iniziale "; VIEW.PHP include("config.inc.php"); $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); $query = "SELECT titolo,testo,data,autore,mail FROM news WHERE id='$_GET[id]'"; $result = mysql_query($query, $db); $row = mysql_fetch_array($result); $data = date("j/n/y", $row[data]); echo " $row[titolo] "; echo "$row[testo] "; if ($row[mail] != "") echo "$data, $row[autore] "; else echo "$data, $row[autore] "; echo " Torna alla pagina iniziale ";