PHP e Structured Query Language



Похожие документы
Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Non vedo l ora Realizzazione di un sistema per la gestione dell orario scolastico

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Esercitazione PAM. (Php Apache MySQL)

MySQL Database Management System

Dispensa di database Access

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Al giorno d oggi, i sistemi per la gestione di database

19. LA PROGRAMMAZIONE LATO SERVER

Istruzioni DML di SQL

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

<?php include './include/page.php';

MySQL Database Management System

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Le Basi di Dati. Le Basi di Dati

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

DBMS (Data Base Management System)

PHP e MySQL. Scripting server-side per accesso a DB MySQL

Informatica per le discipline umanistiche 2 lezione 10

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Capitolo 13. Interrogare una base di dati

PHP 5. PHP ed i database. Database e tabelle. Struttura di un DB relazionale. Accesso a database

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Volumi di riferimento

Gestire le sessioni con le Servlet

RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Concetti fondamentali dei database database Cos'è un database Principali database

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Sistemi per la gestione di database: MySQL ( )

Access. P a r t e p r i m a

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1

Esercizi ed appunti PHP

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

RELAZIONE TECNICA GESTIONE CARTE DI CREDITO. a cura di EMANUELE CESARI

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Lavorare con MySQL Parte Seconda.

Raggruppamenti Conti Movimenti

CONCETTO DI ANNIDAMENTO

Introduzione ai database relazionali

User Tools: DataBase Manager

Introduzione a MySQL

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

PHP 5. Accesso a database

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda)

Tener traccia del client

BASI DI DATI Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

MODULO 5 ACCESS Basi di dati. Lezione 4

Una metodologia di progettazione di applicazioni web centrate sui dati

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base Variabili, operatori e commenti Array...

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

2104 volume III Programmazione

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

ASP: DOMANDE E RISPOSTE (Q&A)

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB

Corso sul linguaggio SQL

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE

Progettazione di un Database

Esercitazione di Basi di Dati

Basi di dati. Basi di dati = database. Basi di dati

Progettazione Web Applicazioni client-server

SQL (STRUCTURED QUERY LANGUAGE)

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Introduzione JDBC interfaccia java.sql driver caricare i driver

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

Programmazione Web. Laboratorio 4: PHP e MySQL

SISTEMA AFFILIAZIONE E TESSERAMENTO MANUALE UTENTE

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Lezione 6: Form 27/04/2012

OSSIF WEB. Manuale query builder

DATABASE. A cura di Massimiliano Buschi

MySQL Command Line Client: operazioni fondamentali

Eprogram ITIS V anno Unità 6 - PHP e MySQL

Visualizzazione ordini in MyShopDB

Транскрипт:

Esercitazioni del corso di Tecnologie per la Comunicazione Aziendale PHP e Structured Query Language Marco Loregian loregian@disco.unimib.it www.siti.disco.unimib.it/didattica/tca2008 Interrogazioni (ripasso) Scarpe blu HTTP HTTP Il client (browser) manda tramite HTTP una richiesta al server (con una serie di parametri): tramite il modulo è specificata una pagina che contiene le istruzioni su come elaborare la richiesta Il server esegue lo script contenuto nella pagina richiesta dal client, elabora la richiesta, a seconda dei parametri, eventualmente consultando un suo archivio (base di dati) Il server impacchetta la nuova pagina, generata dalle istruzioni dello script, e la invia al client Il browser visualizza la pagina dei risultati

Obiettivo L obiettivo di questa esercitazione è realizzare, usando php ed un database mysql, un meccanismo per memorizzare ed estrarre informazioni relative a dei libri Schema Browser PHP SQL HTTP Web Server Database SQL

Database Strumenti per la memorizzazione persistente di informazioni (dati) I Database sono formati da delle Tabelle, ognuna con un proprio nome, che contengono i Records formati da righe e colonne Nelle righe sono presenti una informazione (record) e le colonne sono i singoli dati (parti di una informazione) Persone (nome, cognome, data_nascita, sesso, stato_civile) Tabelle e relazioni I db non sono composti da una sola tabella, ma di tabelle che contengono informazioni di tipo diverso, fra loro collegate da relazioni

SQL SQL Premessa Introduciamo gli elementi di base di SQL per poter lavorare con un database da pagine PHP prima vediamo come lavorare con un database indipendentemente da PHP poi inseriamo i concetti in pagine PHP Non è necessaria una conoscenza approfondita del linguaggio (molto potente!) per i nostri scopi

Operazioni Creazione di un database Creazione di tabelle Non lo faremo dalle nostre pagine php Operazioni con/sui dati inserimento di nuovi record in qualche tabella estrazione (selezione) dei record, eventualmente corrispondenti a qualche criterio aggiornamento dei record, ovvero modifica dei dati memorizzati cancellazione di record dalle tabelle Le useremo nelle nostre pagine php Creazione di un DB CREATE DATABASE nome_database I database è il contenitore delle tabelle, che a loro volta contengono i dati veri e propri (record) in lab lo faremo con una interfaccia grafica

Creazione di tabelle CREATE table nome_tabella ( nome_colonna tipo_colonna [ clausola_default ] [ vincoli_di_colonna ] [, nome_colonna tipo_colonna [ clausola_default ] [ vincoli_di_colonna ]... ] [, [ vincolo_di tabella]... ] ) Le parentesi quadre indicano una parte opzionale in lab lo faremo con una interfaccia grafica Tabella per esempio CREATE TABLE 'libri ' ( 'titolo' VARCHAR( 256 ), 'autore' VARCHAR( 128 ), 'pagine' INT ) in lab lo faremo con una interfaccia grafica Useremo questa tabella libri per i prossimi esempi

Inserimento Sintassi Esempio Attenzione INSERT INTO nome_tabella[ ( elenco_campi ) ] VALUES ( elenco_valori ) INSERT INTO `libri` ( `titolo`, `autore`, `pagine`) VALUES ('I promessi sposi', 'Alessandro Manzoni', '386'); - il tipo di dato inserito deve essere consistente con la definizione della colonna (testo, numeri, ) Popolo la tabella con i dati (per l esempio) Selezione (consultazione dei dati) Sintassi Esempio Attenzione SELECT [ ALL DISTINCT ] quali_elementi FROM tabella [ WHERE espressione_condizionale ] [ GROUP BY lista_colonne ] [ HAVING espressione_condizionale ] [ ORDER BY lista_colonne ] [ LIMIT intervallo ] SELECT * FROM `libri` []! opzionale * vuol dire che estraggo tutte le colonne - la clausola di selezione deve essere coerente con il tipo di dati

Esempi di select SELECT * FROM `libri` ORDER BY `autore` SELECT * FROM `libri` ORDER BY `pagine` DESC SELECT * FROM `libri` HAVING `pagine` < 200 Aggionamento Sintassi Esempio Attenzione INSERT INTO nome_tabella[ ( elenco_campi ) ] VALUES ( elenco_valori ) UPDATE `libri` SET `titolo` = 'La coscienza di Zeno' WHERE `titolo` = 'La coscienza di Zero'; - come per l inserimento, il tipo di dato inserito deve essere consistente con la definizione della colonna (testo, numeri, ) Bisogna stare attenti che la clausola WHERE identifichi esattamente il record che vogliamo aggiornare Di solito, si usa il concetto di chiave: un campo che identifica un record in maniera univoca (non può essere nullo o duplicato) numero di matricola, codice fiscale, La clausola WHERE è basata su espressioni booleane (posso anche usare AND)

PHP+SQL Cancellazione Sintassi Esempio Attenzione DELETE FROM nome_tabella [ WHERE espressione_condizionale ] DELETE FROM `libri` WHERE `autore` = 'Galileo Galilei' - potrebbero esserci riferimenti incrociati fra i dati - esistono vari modi di gestire la cancellazione (in cascata, ) - i dati non sono recuperabili dopo la cancellazione Valgono le raccomandazioni fatte per l aggiornamento PHP+SQL

Usare un database Devo conoscere i parametri per accedere al database (URL, username, password, nomi di tabelle e campi, ) ragionevole, dato che devo usare il database! Come prima cosa, in php devo stabilire una connessione con il database La connessione è lo strumento con cui eseguire le query (interrogazioni) sul database Se una query restituisce dei risultati (select) devo manipolarli (visualizzarli, ) Alla fine devo chiudere la connessione Vd. link seguente, ed esempio annesso http://php.html.it/guide/lezione/2286/lo-schema-utilizzato/ php per select (1/2) <?php $username = "root"; $password = "root"; $hostname = "localhost:8889"; $dbname = "tcablog"; $tablename = "libri"; Parametri del database $connessione = mysql_connect($hostname, $username, $password)! or die("unable to connect to MySQL"); $selected = mysql_select_db($dbname,$connessione)! or die("could not select $dbname"); print "<h1>contenuto di $hostname : $dbname. $tablename</h1>"; $query = "SELECT * FROM `$tablename`"; $risultati = mysql_query($query,$connessione);?> Connessione Esecuzione query

php per select (2/2) <table border="1"> <tr>! <th>autore</th>! <th>titolo</th>! <th>pagine</th> </tr> <?php while($riga = mysql_fetch_array($risultati))! { echo "<tr><td>". $riga['autore']. "</td>". "<td>". $riga['titolo']. "</td>". "<td>". $riga['pagine']. "</td></tr>";! } Scansione risultati mysql_close($connessione);?> </table> Chiusura connessione Risultato

Inserimento di dati html php + sql HTTP: get / post Pagina con modulo (form) dati Inserimento dati nel db (e feedback) Insert (html) <html> <head> <title>inserimento nuovo libro</title> </head> <body> <h1>inserisci un nuovo libro nel database</h1> <form action="insert.php" method="post"> Autore: <input type="text" name="autore"><br> Titolo: <input type="text" name="titolo"><br> Pagine: <input type="text" name="pagine"><br> <input type="submit" value="inserisci"> </form> </body> </html> insert.html

Insert (php 1/2) <html><head><title>inserimento libro</title></head><body> <?php $username = "root"; $password = "root"; $hostname = "localhost:8889"; $dbname = "tcablog"; $tablename = "libri"; insert.php $autore = $_REQUEST['autore']; $titolo = $_REQUEST['titolo']; $pagine = $_REQUEST['pagine']; Leggo dati passati via POST $connessione = mysql_connect($hostname, $username, $password)! or die("unable to connect to MySQL"); $selected = mysql_select_db($dbname,$connessione)! or die("could not select $dbname");! $query = "INSERT INTO libri (titolo, autore, pagine) VALUES ('$titolo','$autore',$pagine)";!! if (mysql_query($query, $connessione)) echo "Libro inserito correttamente"; else echo "Errore durante l'inserimento"; Eseguo la query $pagine senza apici perché è un numero Se nell if else o in un ciclo c è una sola istruzione posso omettere le graffe Insert (php 2/2) print "<h1>contenuto di $hostname : $dbname. $tablename</h1>"; $query = "SELECT * FROM `$tablename`"; $result = mysql_query($query,$connessione);?> <table border="1"> <tr>! <th>autore</th>! <th>titolo</th>! <th>pagine</th> </tr> Eseguo un altra query sulla connessione (idem come esempio select) insert.php <?php while($row = mysql_fetch_array($result))! { echo "<tr><td>". $row['autore']. "</td>". "<td>". $row['titolo']. "</td>". "<td>". $row['pagine']. "</td></tr>";! } mysql_close($connessione);?> </table> <p><a href="insert.html">inserisci un altro libro.</a></p> </body></html> Link a pagina per inserire ancora dati

Risultato inserimento insert.html insert.php GET vs. POST Due metodi forniti da HTTP per trasmettere dati da client a server GET passaggio valori tramite URL (lunghezza limitata) da usare per interrogazioni (select) nessun avviso dal browser $_GET[ nome ] POST passaggio valori non visibile (ok per password) da usare per inviare/ modificare dati avviso in caso di re-submit $_REQUEST[ nome ] Altre differenze, vedere: http://www.cs.tut.fi/~jkorpela/forms/methods.html

Cookies I Cookie sono il metodo più comune per la memorizzazione dello stato nel web Il cookie è un piccola file che contiene alcune informazioni e viene memorizzato nella memoria del browser o sul disco Per inviare cookie devono essere attivati dal browser del client Quando si invia un cookie lo possiamo leggere solo quanto l'utente torna sul sito I cookie devono essere emessi prima di qualsiasi codice php o html Non devono superare le dimensioni di 4 Kb Possono contenere: Nome, Valore, Scadenza, Percorso, Dominio, Sicurezza http://www.sci.unich.it/~bista/didattica/reti-sicurezza/seminari2004-05/cookies/ file%20per%20cookie/guida%20php%20%20cookie.htm Cookies in PHP (esempio) <?php setcookie ("test_cookie","niente di particolare",time()+43200,"/"); echo "<HTML>"; echo "<BODY>"; if (isset($test_cookie)){ echo "Ciao cookie, i tuoi contenuti sono: $test_cookie"; } else { echo "Non ho trovato alcun cookie con il nome test_cookie"; } echo "</BODY>"; echo "</HTML>";?> Scrivo un cookie e ne recupero il valore (ma se non è stato possibile scriverlo...)

Riferimenti http://www.webmasterpoint.org/asp/sql/home.asp http://database.html.it/guide/leggi/40/guida-linguaggio-sql/ http://it.wikipedia.org/wiki/sql http://php.html.it/guide/leggi/77/guida-phpmysql-pratica/