MySQL Database Management System



Похожие документы
MySQL Database Management System

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

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

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

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

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

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

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

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Esercizio data base "Biblioteca"

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

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Database 3 affitto veicoli. Testo del quesito

APPUNTI DI PHP : V INFORMATICA SEZIONE G

DBMS (Data Base Management System)

PHP e Structured Query Language

Guide: Lista generale Guida pratica Php/MySql

Lavorare con MySQL Parte Seconda.

Le Basi di Dati. Le Basi di Dati

Esercizio sui data base "Gestione conti correnti"

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

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

Database 1 biblioteca universitaria. Testo del quesito

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

MANUALE PARCELLA FACILE PLUS INDICE

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

Dispensa di database Access

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

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

Corso di Informatica. Immissione di dati. Visualizzazione come foglio dati 1. Visualizzazione come foglio dati 2 11/01/2008

Guida alla registrazione on-line di un DataLogger

GERARCHIE RICORSIVE - SQL SERVER 2008

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

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

OSSIF WEB. Manuale query builder

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

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

Corso Drupal «Project management»

PHP e MySQL. Guida scaricata da

RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

Basi di Dati. S Q L Lezione 5

MODULO 5 Appunti ACCESS - Basi di dati

Le query di raggruppamento

Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...).

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

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

CONCETTO DI ANNIDAMENTO

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali

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

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

Invio SMS. DM Board ICS Invio SMS

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Procedura SMS. Manuale Utente

Capitolo 13. Interrogare una base di dati

per interventi strutturali di rafforzamento locale o di miglioramento sismico, - art. 2, comma 1, lettere b) e c) -

I file di dati. Unità didattica D1 1

Il sistema C.R.M. / E.R.M.

Dispensa DB Mercato del Lavoro

MODULO 5 ACCESS Basi di dati. Lezione 4

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Come creare il test dei 7 minuti tramite l applicazionetraining Center

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

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

NUOVO SISTEMA AGGIORNAMENTO DA FYO

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente

Corso di Sistemi di Elaborazione delle informazioni

Hub-PA Versione Manuale utente

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

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Introduzione ai Sistemi di Gestione di Basi di Dati XML

STAMPA UNIONE DI WORD

I FORM. L'attributo action contiene l'url del file php a cui devono essere inviati i file per essere elaborati.

Sviluppare un DB step by step

CHIUSURE di MAGAZZINO di FINE ANNO

Circolari e lettere da Word con anagrafiche e indirizzi da Metodo

Come modificare la propria Home Page e gli elementi correlati

MANUALE EDICOLA 04.05

Raggruppamenti Conti Movimenti

IL DAT A B A S E DI ALGE B R A N D O

Tabelle Pivot - DISPENSE

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Manuale Fornitore E-Vendor

Sicurezza Informatica: Tecniche di SQL INJECTION

Dati relazionali e XML

1 CARICAMENTO LOTTI ED ESISTENZE AD INIZIO ESERCIZIO

Università degli Studi di Verona. Laboratorio di Basi di Dati

MANUALE DI UTILIZZO CMS GESTIONE TORNEI

User Tools: DataBase Manager

ISI s.r.l. Corso di Access 05 CREARE UN ELENCO MAILING ED INVIARE MESSAGGI DI POSTA ELETTRONICA Pag. 1/6

Guida operativa. My Legal Corner. BestSoft SOFTWARE IN SANITÀ

Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara.

CREAZIONE DI UN AZIENDA

Amministrare MySQL con PhpMyAdmin

Транскрипт:

MySQL Database Management System II parte Progetto gestione booking prenotazioni on-line 1. Progettazione e creazione struttura database che chiameremo booking. 2. Progettazione e creazione di un form per l'inserzione dei record in un file di nome insertion.php. 3. Progettazione e creazione di una pagina index.php che dovrà contenere i pacchetti inseriti suddivisi automaticamente in più pagine. 1

4. Progettazione e creazione di una pagina view.php che visualizzi il pacchetto completo selezionato in precedenza nella pagina index.php. 5. Progettazione e creazione di un motore di ricerca attraverso una pagina search.php che, in base ad alcuni campi inseriti dall'utente, cercherà i pacchetti che li contengono. 6. Progettazione e creazione di una pagina result.php che avrà il compito di elaborare la richiesta inserita dall'utente. 7. Progettazione e creazione di una pagina booking.php per l'inserzione del record di prenotazione per il pacchetto selezionato in precedenza nella pagina view.php o result.php. 8. Progettazione e creazione di una pagina estratto_conto.php che dovrà contenere le prenotazioni inserite divise per gruppi suddivisi automaticamente in più pagine. 9. Progettazione e creazione di una pagina lista_passeggeri.php che dovrà contenere le prenotazioni inserite divise per pacchetti e per date partenza suddivisi automaticamente in più pagine. 2

DATABASE booking Il database dovrà contenere 6 tabelle: 1. Destinazioni (mare, montagna, crocere, ecc.) 2. Nazioni 3. Regioni (contiene un campo in relazione a Nazioni) 4. Pacchetti Descrizione Destinazione Regione Data partenza Disponibilità prezzo Cognome 5. Prenotazioni Gruppo Pacchetto Totale 6. Partecipanti Gruppo Nome Dovrà essere popolata tramite la pagina insertion.php soltanto la tabella pacchetti mentre le tabelle destinazione, nazioni, regioni saranno preparate direttamente nella creazione del database. In base ai record in esse contenuti potremo scegliere le specifiche per quelli da inserire in pacchetti. 3

SELECT Questo genere di query servirà per ricavare i dati precedentemente inseriti in una tabella: SELECT colonne FROM tbl_name WHERE condizioni opzioni colonne indica tutte le colonne di cui vogliamo il valore. condizioni sono le condizioni che devono verificarsi, perché una riga sia visualizzata. Queste sono dello stesso tipo di quelle viste nei casi UPDATE e DELETE. opzioni ci serviranno per esempio per ordinare le righe. Per fare un esempio SELECT id, cognome, nome, count(*) AS tot FROM my_table WHERE cognome='rossi' ORDER BY nome, id DESC SELECT cognome FROM my_table GORUP BY cognome SELECT * FROM my_table WHERE cognome LIKE 'Ro%' OR nome LIKE '%ri%' 4

Divideremo ora il nostro archivio di notizie su due tabelle spezzando la tabella news in due parti: prenderemo le colonne autore e mail e ne faremo una tabella nuova che chiameremo autori. Nella parte rimanente della tabella news aggiungeremo una colonna autore che mi farà corrispondere ogni riga della tabella a una sola riga della tabella autori. A questo punto non ci resta che vedere come visualizzare le informazioni in modo tale da specificare che quando un articolo è scritto da una certa persona, vogliamo che sia visualizzato proprio il suo indirizzo mail. Il metodo più semplice è quello di selezionare le singole colonne: $query = "SELECT news.titolo, news.testo, news.data, news.nome AS autore, autori.mail FROM news, autori WHERE news.nome = autori.nome AND id='$id'"; Normalmente per ottenere l'unione di due tabelle si usa JOIN: $query "SELECT titolo, testo, data, news.nome AS autore, mail FROM news LEFT JOIN autori ON news.nome = autori.nome WHERE id='$id'"; 5

Dopo aver popolato il database con un certo numero di pacchetti possiamo occuparci di visualizzarne il contenuto. Creiamo la pagina che dovrà contenere le descrizioni inserite e la chiamiamo index.php. Inviamo quindi la query al database e ne ricaviamo un identificatore nella variabile $result: $result = mysql_query($query, $db); Attraverso $result, potremo ora ottenere le singole righe che ci vengono restituite dal database utilizzando la funzione mysql_fetch_array: while ($row = mysql_fetch_array($result)) La funzione restituisce una sola riga del database in base alla selezione della query identificata da $result. Una volta ottenuta la prima riga, sarà possibile ricavare la riga seguente richiamando nuovamente la funzione mysql_fetch_array. Quando le righe saranno finite, la funzione restituirà FALSE. 6

In seguito dovremo specificare in un blocco cosa vogliamo fare con la riga selezionata, prima di passare alla successiva: { echo "<a href=\"view.php?id=$row[id]\">". date("j/n/y", $row[data]). " - $row[descrizione]</a><br>"; } <a href=\"view.php?id=$row[id]\"> crea il link che permette all'utente di cliccare sulla descrizione per poter leggere tutto il contenuto e porta alla pagina view.php passandogli come parametro l'id del pacchetto che stampiamo sotto forma di $row[id]. date("j/n/y", $row[data]) è una funzione Php che in base a una data in timestamp, $row[data], crea la data nel formato g/m/aa. - $row[descrizione]</a><br> dopo aver inserito un delimitatore, -, visualizza la descrizione, chiude il tag del link e va a capo. Vediamo come possiamo accedere al contenuto di un pacchetto a partire dal solo id. Creiamo una nuova pagina che chiamiamo view.php che ha come unico scopo quello di visualizzare il contenuto completo di un pacchetto selezionato in precedenza nella pagina index.php. La query da aggiungere sarà: $query = "SELECT * FROM pacchetti WHERE id='$id'"; $result = mysql_query($query, $db); $row = mysql_fetch_array($result); $data = date("j/n/y", $row[data]); echo "<b>$row[descrizione]</b><br><br>";.. 7

In fondo al pacchetto inseriamo due link: il primo porterà nuovamente alla prima pagina (index.php), il secondo aprirà una nuova pagina (booking.php) in cui potremo inserire una prenotazione. echo "<br><a href=index.php>torna alla pagina iniziale</a><br>"; echo "<a =booking.php>prenota</a><br>"; Vediamo quindi come visualizzare i pacchetti suddivisi automaticamente in più pagine. $query = "SELECT id,data,descrizione FROM pacchetti ORDER BY data DESC LIMIT $start,$step"; $result = mysql_query($query, $db); while ($row = mysql_fetch_array($result)) { echo "<a href=\"view.php?id=$row[id]\">". date("j/n/y", $row[data]). " - $row[descrizione]</a><br>"; } 8

Prima di inserire il link alla pagina successiva, creiamo una sorta di indice con tutte le pagine elencate e numerate. $query = "SELECT count(*) AS tot FROM pacchetti"; $result = mysql_query($query, $db); $row = mysql_fetch_array($result); $pages = intval(($row[tot]-1) / $step)+1; A questo punto possiamo creare un link per ogni pagina: for ($i=0; $i<$pages AND $i<20; $i++) { $start_page = $i * $step; echo "<a href=index.php?start=$start_page>". ($i+1). "</a> ";} Infine possiamo inserire il link alla pagina successiva. if ($start + $step < $row[tot]) { $start_next = $start + $step; echo "<a href=index.php?start=$start_next>successivi</a>"; } Fatto questo inseriamo un link al motore di ricerca: echo "<a href=search.php>cerca negli articoli</a>"; 9

Inseriremo un motore di ricerca creando la pagina search.php che, in base ad alcuni campi inseriti dall'utente, cercherà i pacchetti che li contengono. Dovremo creare un form che contenga campi di testo per immettere i campi da cercare: <form method=post action=result.php> <input type=text name=chiave1> <input type=text name=chiave2> <input type=submit value=cerca><br> </form> Veniamo alla pagina result.php che avrà il compito di elaborare la stringa inserita dall'utente. $query = " SELECT id, descrizione, data FROM pacchetti WHERE "; $chiave1 = trim($chiave1); if ($chiave1!= "") $query.= destinazione = $chiave1 OR "; $chiave2 = trim($chiave2); if ($chiave2!= "") $query.= prezzo < $chiave2 OR "; $query.= "0"; $result = mysql_query($query, $db); while ($row = mysql_fetch_array($result)) { echo "<a href=\"view.php?id=$row[id]\">". date("j/n/y", $row[data]). " - $row[descrizione]</a><br>"; } 10

mysql_affected_rows() Dopo aver inviato una query di modifica al database (INSERT, UPDATE, o DELETE) possiamo utilizzare questa funzione per ottenere il numero di righe su cui la modifica ha avuto effetto. $query = "UPDATE my_table SET nome='mario' WHERE cognome='rossi'"; mysql_query($query); $num = mysql_affected_rows(); echo "Modificate $num righe"; mysql_num_rows($result) Restituisce il numero di righe di cui è composto il risultato di una query. Questa funzione è valida solo per query del tipo SELECT. $query = "SELECT * FROM my_table WHERE cognome='rossi'"; $result = mysql_query($query); $num = mysql_num_rows(); echo "Trovati $num Rossi"; 11

mysql_insert_id() Dopo un inserimento, restituisce il valore utilizzato per la colonna di tipo AUTO_INCREMENT. $query = "INSERT INTO my_table (id, nome, cognome) VALUES ('', 'Luigi', 'Bianchi')"; mysql_query($query); $num = mysql_insert_id(); echo "Luigi Rossi ha id: $num"; mysql_list_tables($db_name) Restituisce una lista contenente i nomi delle tabelle nel database specificato. $result = mysql_list_tables($my_db); while (list($table) = mysql_fetch_array($tables)) echo "$table "; 12

mysql_escape_string($stringa) Tramite questa funzione vengono inseriti i caratteri di escape nella stringa. $nome = mysql_escape_string($nome); $pass = mysql_escape_string($pass); $query = "SELECT * FROM utenti WHERE nome='$nome' AND password='$pass'"; mysql_errno() Otteniamo il numero dell'errore dell'ultima operazione eseguita da MySQL. Se non ci sono stati errori la funzione restituisce 0. $query = "INSERT INTO my_table (id, nome, cognome) VALUES (13, 'Luigi', 'Bianchi')"; if (!(@mysql_query($query))) echo "Errore nr ". mysql_errno()." nell'inserimento"; 13

mysql_error() Come la funzione precedente, ma invece di restituire il numero dell'errore, ne restituisce una descrizione. $query = "INSERT INTO my_table (id, nome, cognome) VALUES (13, 'Luigi', 'Bianchi')"; if (!(@mysql_query($query))) echo "Errore nell'inserimento: ". mysql_error(); 14