Band musicale (Mercurio 2001)
lezione
Lezione 3
3
Band musicale (mercurio 2001)
In questa lezione impareremo...
• a risolvere una traccia d’esame con interrogazioni SQL
• a realizzare le pagine WEB statiche richieste dalla traccia
• ad effettuare la connessione dinamica ad un database
■■ Il testo
pag. 1/1
No #####/01
Sessione ordinaria 2001
Seconda prova scritta
YABC – ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE
Indirizzo: INFORMATICA
Una nota band musicale decide di tenere due concerti nella stessa città, a distanza di tre giorni l’uno
dall’altro. Il sistema di prenotazioni e acquisto dei biglietti è affidato ad una società che lo gestisce in
modo totalmente informatizzato.
La gestione del servizio deve prevedere:
• la registrazione della prenotazione a fronte della disponibilità del posto nella data prescelta;
• la registrazione del pagamento con l’emissione del biglietto;
• la segnalazione dell’esaurimento dei posti in una o entrambe le date previste;
• la prenotazione automatica, previo consenso, per l’altra data qualora per quella prescelta risultassero esauriti i posti disponibili;
• la creazione di una pagina Web relativa all’evento in cui compaiano una breve descrizione della
band, le date dei concerti, la disponibilità di posti e due immagini fotografiche.
Il candidato dopo aver:
• illustrato le caratteristiche dell’applicativo che intende utilizzare per realizzare il software;
• ipotizzato e rappresentato lo schema generale della procedura;
• indicato come intende organizzare i dati;
• disegnato la pagina Web;
• descritto la sequenza delle operazioni da compiere per la pubblicazione della pagina Web presso
un sito ospitante;
sviluppi uno dei seguenti punti in un linguaggio a sua scelta:
1.Produrre l’elenco aggiornato delle prenotazioni per ciascuna data.
2.Stampare il biglietto recante l’indicazione della data ed un codice identificativo.
3.Costruire la pagina Web secondo le indicazioni precedentemente esposte.
Durata massima della prova: 6 ore.
È consentito soltanto l’uso di manuali tecnici e di calcolatrici tascabili non programmabili.
Non è consentito lasciare l’Istituto prima che siano trascorse 3 ore dalla dettatura del tema.
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
1
UdA 7
La prova scritta di informatica
■■ Osservazioni sul testo
Anche per questa traccia non sono richieste le interrogazioni al database in linguaggio SQL e quindi
é stata selezionata sia per proporre uno schema di soluzione sia per poterla svolgere anche nella
prima parte dell’anno scolastico. È invece richiesta una parte web con due semplici pagine HTML,
una delle quali, però, deve connettersi al database per recuperare un dato dinamico (il numero dei
posti disponili per le due serate).
■■ Analisi
Il testo limita il progetto alla realizzazione di una applicazione ad-hoc per la gestione di un singolo
evento “spot”: quindi nella sua realizzazione terremo conto di questa indicazione per operare scelte
progettuali mirate, sulla base dei seguenti vincoli:
◗◗ il numero di concerti è fisso (n = 2) in due serate specificate;
◗◗ il luogo dei concerti è lo stesso per entrambe le date e quindi il numero di posti disponibili (e la
loro tipologia) è lo stesso per entrambe le date;
◗◗ i posti possono essere prenotati esclusivamente via internet con possibilità di pagamento mediante bonifico o con carta di credito;
◗◗ i biglietti possono essere inviati a domicilio dietro pagamento di una commissione aggiuntiva
oppure ritirati direttamente allo sportello allestito nelle serate dell’evento nel luogo del concerto.
Sostanzialmente il sistema deve effettuare la prenotazione on-line dei posti per due serate musicali:
il comportamento del sistema è diverso a seconda che venga richiesto un posto per la prima o la
seconda serata:
richiesta prima serata: quando ad uno spettatore viene assegnato un posto per il concerto si deve richiedere il pagamento, altrimenti il sistema ricerca la disponibilità di un posto per la serata successiva: se questo è disponibile, richiede conferma allo spettatore e procede con la fase di pagamento;
richiesta seconda serata: in questo caso la procedura è più semplice in quanto non esistono alternative: o si trovano i posti per quella serata oppure lo spettatore non potrà assistere al concerto.
■■ Ipotesi aggiuntive
Non è specificato il numero dei posti,
se ve ne sono di disponibili e neppure se i posti sono numerati: noi prenderemo come riferimento un generico teatro dove sono presenti diverse
categorie di posti, ciascuna con un
numero specifico di poltrone; naturalmente il prezzo sarà diverso a seconda della qualità di visione e quindi
della categoria di posto.
Una prenotazione può essere effettuata per più posti: in questo caso si cerca dapprima di offrire al cliente i posti
adiacenti nella categoria prescelta, in
secondo luogo anche distanti tra loro
ed infine anche tra categorie diverse,
richiedendo comunque sempre l’approvazione del cliente prima di effettuarne la conferma.
Per “complicare” la traccia si è deciso di effettuare una differenziazione dei posti utilizzando la
pianta di un vero teatro, di seguito riportata.
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
2
Band musicale (Mercurio 2001)
Lezione 3
Descriviamo il teatro con una entità (posto) che traduce questa piantina in un insieme di record:
◗◗ posti per handicappati: 4 posti
◗◗ posti in prima fila: 1 fila di 24 posti
◗◗ posti in platea: 5 file con rispettivamente 23,24,16,7 posti
◗◗ posti in galleria: 11 file (da F7 a F 17) con posti da 36 a 4, a seconda della fila
Ciascuna delle quattro tipologie di posto ha un prezzo diverso :
Abbiamo quindi 17 file di posti alle quali aggiungiamo una 18esima fila con i quattro posti per gli
handicappati: una entità file_teatro con 18 record descriverà la “piantina” del nostro teatro.
■■ Moduli (o blocchi)
Il primo quesito si può scomporre nei seguenti cinque blocchi funzionali:
a) richiesta posti da parte dello spettatore
b) registrazione del cliente
c) ricerca disponibilità posti
d) gestione pagamento
e) gestione biglietti
Il modulo a) si riduce ad una semplice pagina HTML dove viene proposta la piantina del teatro indicando per ciascuna tipologia di posto il costo del biglietto ed il numero di posti disponibili: il cliente,
dopo aver fatto la registrazione dei propri dati anagrafici, procede con la prenotazione;
Il modulo b) consiste in un form HTML che l‘utente compila con i propri dati anagrafici, indirizzo
e-mail, tipo carta di credito ed effettua la registrazione alla applicazione;
Il modulo c) ricerca e propone allo spettatore i posti disponibili (tipologia, posizione e data) in base
alla sua richiesta, attendendone la conferma;
Il modulo d) viene richiamato alla conferma della prenotazione e gestisce la fase di pagamento;
Come ultimo passaggio viene richiesto allo spettatore come preferisce ricevere i biglietti, se tramite
corriere oppure col ritiro all’ingresso del concerto; il modulo e) gestisce queste situazioni, stampa i
biglietti e predispone la busta nominativa dove inserirli, sia che vengano spediti mezzo corriere, sia
che vengano consegnati manualmente.
Le funzionalità descritte saranno disponibili in un sito web, quindi realizzate con i linguaggi
di programmazione adatti alla realizzazione dei modello three-tier, utilizzando HTML e Javascript per la programmazione del client, My_SQL, e PHP le operazioni lato server.
A questo punto risultano esaurite le richieste dei primi due punti della traccia.
■■ Schema concettuale
Il terzo quesito riguarda la progettazione dello schema concettuale della base di dati (modello E/R).
Per prima cosa realizziamo il glossario dei termini, al quale seguirà la definizione delle entità e delle
relazioni che intercorrono tra di esse.
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
3
UdA 7
La prova scritta di informatica
Glossario dei termini
Dalla rilettura del testo possiamo evidenziare i seguenti termini:
Termine
Descrizione
Collegamenti
Cliente
Colui (singolo) che effettua una (o più) prenotazione di
uno (o più) posti per uno (o più) concerti
posto, concerto, prenotazione
Concerto
Una delle due rappresentazioni musicali
posto, data
Tipologia
Differenzia la qualità dei posti del teatro
posto, file_teatro
File_teatro
Un insieme di posti della stessa Tipologia
Posto
Posti_Concerto
Unità che può essere prenotata
file_teatro, tipologia, concerto
Prenotazione
Operazione effettuata dal cliente per riservarsi posti
per il concerto
cliente, posti _concerto
Posti _Prenotati
Singolo posto del teatro prenotato per uno specifico
concerto
posti _concerto, concerto,
posti_teatro
Partendo da questi iniziamo a definire le entità.
Entità
Il modello concettuale (modello E/R) viene realizzato individuando dapprima le entità, che in questo caso sono:
◗◗ Cliente: rappresenta l’anagrafica degli spettatori (in seguito clienti) ed ha un ID autoincrement
come chiave primaria;
◗◗ Concerto: rappresenta l’anagrafica dei due concerti ed ha un ID autoincrement come chiave primaria dove saranno presenti solo due record, rispettivamente con valore 1 e 2;
◗◗ Tipologia: rappresenta la tabella con le tipologie di posto per ogni spettacolo (platea, galleria, ecc)
ed ha un ID autoincrement come chiave primaria;
◗◗ File_Teatro: rappresenta l’anagrafica dei posti del teatro (ogni record è una fila di N posti), ha un
ID autoincrement come chiave primaria ed è composto da 18 file;
◗◗ Posti_Concerti: rappresenta l’anagrafica dei posti del teatro per ogni singolo concerto, con l’indicazione di quanti posti sono liberi per ciascuna delle 18 file, ed ha un ID autoincrement come
chiave primaria;
◗◗ Prenotazione: rappresenta l’anagrafica delle varie prenotazioni effettuate dai clienti per i diversi
concerti ed ha un ID autoincrement come chiave primaria;
◗◗ Posti_Prenotati: ogni record è un singolo posto prenotato da una Prenotazione.
Associazioni
I legami logici esistenti tra le entità sono i seguenti:
tipo 1: 1:N n tra Concerti e Posti_Concerto (obbligatoria).
tipo 1:N tra Cliente e Prenotazioni(facoltativa);
tipo 1:N tra Prenotazione e Posti_Prenotati (obbligatoria);
tipo 1:N tra Posti_Concerti e Posti_Prenotati (obbligatoria);
tipo 1:N tra File_Teatro e Posti_Concerti (obbligatoria);
tipo 1:N tra Tipologie e File_Teatro (obbligatoria);
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
4
Band musicale (Mercurio 2001)
Lezione 3
Diagramma E/R
Il diagramma E/R è quindi il seguente:
Prenotazione
Posto Prenotato
Posto Concerto
ID_prenotazione
ID_posto_prenotato
ID_posto
Comune
Tipologia
ID_comune
ID_tipologia
Cliente
Fila Teatro
Concerto
ID_cliente
ID_fila_teatro
ID_concerto
Nel diagramma è doveroso aggiungere l’entità Comuni necessaria per completare l’anagrafica del Cliente (comune (pk), CAP, provincia, sigla_provincia) da utilizzarsi nel caso di spedizione dei biglietti.
Sarebbe anche opportuno scomporre ulteriormente tale entità aggiungendo l’entità Province, ma viene lasciato come esercizio al lettore.
■■ Schema logico
Lo schema logico viene utilizzato per la definizione delle strutture di dati e prevede che:
ogni entità diventi una tabella
un’istanza di una entità diventi una riga della tabella
ogni attributo dell’entità diventi una colonna della tabella
la chiave primaria dell’entità sia un identificatore univoco delle righe di una tabella
Utilizzando come modello logico il modello relazionale sarà sufficiente implementare le tabelle relative alle singole entità: come per la soluzione precedente riporteremo direttamente
la tabella definita in ambiente Microsoft Access, presenti nel database Band_Musicale_2001.
Tabella Clienti
La tabella Clienti ha ID_cliente come chiave primaria artificiale autoincrement.
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
5
UdA 7
La prova scritta di informatica
Tabella Concerti
La tabella Concerti ha ID_concerto come chiave primaria artificiale autoincrement.
Tabella Tipologie
La tabella Tipologie ha ID_tipologia come chiave primaria artificiale autoincrement.
Tabella File_Teatro
La tabella File_Teatro ha ID_fila_teatro come chiave primaria artificiale autoincrement e chiave
esterna id_tipologia per la relazione con la tabella Tipologie.
Tabella File_Concerti
La tabella File_Concerti ha ID_fila_concerto come chiave primaria artificiale autoincrement e due
chiavi esterne, id_concerto per la relazione con la tabella Concerti e id_fila_posti per la relazione
con la tabella File Teatro: ogni record rappresenta l’occupazione della singola fila di posti per ciascun concerto.
Tabella Prenotazioni
La tabella Prenotazioni ha ID_prenotazione come chiave primaria artificiale autoincrement e la
chiave esterna id_cliente per la relazione con la tabella Clienti.
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
6
Band musicale (Mercurio 2001)
Lezione 3
Tabella Posti_Prenotati
La tabella Posti_ Prenotati ha ID_pp come chiave primaria artificiale autoincrement e due chiavi
esterne, id_prenotazione per la relazione con la tabella Prenotazioni e id_posto per la relazione con
la tabella Posto: ogni record rappresenta l’occupazione di un singolo posto di una particolare fila di
posti per ciascun concerto.
Tabella Comuni
La tabella Comuni ha ID_comune come chiave primaria (codice ISTAT del comune).
Per i nomi delle tabelle è stata rispettata la convenzione di indicarla al plurale.
Per i nomi dei campi sono state mantenute le convenzioni:
◗◗ID_xxx => maiuscolo come chiave primaria artificiale
◗◗id_xxx => minuscolo come chiave esterna artificiale
Lo schema completo che riporta le tabelle e le relazioni è il seguente:
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
7
UdA 7
La prova scritta di informatica
Normalizzazione delle tabelle
Tutte le tabelle sono in IFN, dato che per ogni tabella tutti i gli attributi sono valori atomici.
Tutte le tabelle sono in IIFN, dato che sono in IFN e tutte le colonne non chiave sono completamente dipendenti dalla intera chiave primaria.
Non essendoci chiavi primarie composte, in questo esercizio questo controllo non viene neppure effettuato.
L’unica tabella che non è in IIIFN è la tabella comuni, in quanto non tutte le colonne sono dipendenti
solamente dalla chiave primaria.
Infatti la colonna CAP dipende dalla colonna provincia, e quindi si dovrebbe scomporre in due tabelle:
Comuni (ID_comune (pk), comune, CAP, id_provincia (fk))
Province(ID_provincia (pk), provincia, sigla_provincia)
Dato che in questo esercizio non è essenziale che questa scomposizione venga fatta, la lasciamo come esercizio per il lettore.
A questo punto risulta esaurita la richiesta del punto 3 della traccia.
■■ Interrogazioni
Non essendoci interrogazioni di selezione procederemo con le istruzioni SQL di creazione delle
singole tabelle del database Band_Musicale_2001 per rispondere al quesito al punto 3a della traccia
ministeriale.
La codifica in Access dei comandi per la creazione delle principali tabelle del database vuoto è la
seguente:
CREATE TABLE Clienti (
ID_cliente autoincrement Primary key,
id_comune VARCHAR(5) constraint y references Comuni (ID_comune),
cognome VARCHAR(30),
nome VARCHAR(25),
indirizzo VARCHAR(25),
carta_credito VARCHAR(16),
spedizione LOGICAL
)
CREATE TABLE File_Teatro (
ID_fila_teatro autoincrement Primary key,
id_tipologia INT constraint k references Tipologie(ID_tipologia),
numero_fila CHAR(2)
quanti_posti INT
osservazioni CHAR(100)
)
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
8
Band musicale (Mercurio 2001)
Lezione 3
CREATE TABLE Concerti (
ID_concerto autoincrement Primary key,
data TIMESTAMP,
esaurito LOGICAL
)
CREATE TABLE File_Concerti (
ID_fila_concerto autoincrement Primary key,
id_concerto INT constraint z references Concerti(ID_concerto),
id_fila_posti INT constraint x references File_Teatro(ID_fila_teatro),
posti_liberi INT
)
CREATE TABLE Posti_Prenotati (
ID_PP autoincrement Primary key,
id_prenotazione INT constraint b references Prenotazioni (ID_prenotazione),
id_posto INT constraint c references Posti_Concerti (ID_posto),
numero_posto CHAR(2)
descrizione CHAR(25)
)
CREATE TABLE Prenotazioni (
ID_prenotazione autoincrement Primary key,
id_cliente INT constraint a references Clienti (ID_cliente),
quanti INT,
importo INT,
pagato LOGICAL
)
Per popolare le tabelle possiamo utilizzare le query di inserimento dati, come le seguenti:
INSERT INTO
Concerti (data, esaurito)
VALUES
(‘22-03-2014’, FALSE);
INSERT INTO
Comuni ( ID_comune, comune, CAP, provincia, sigla_provincia )
VALUES
(‘C933’, ‘Como’,’22100’,’Como’, ‘Co’);
INSERT INTO
Tipologie ( tipologia, prezzo )
VALUES
(‘Vip’, 200);
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
9
UdA 7
La prova scritta di informatica
INSERT INTO
Prenotazioni (id_cliente, quanti, importo, pagato)
VALUES
(1, 3, 324, FALSE);
e via di seguito.
Le prime due richieste prevedono di utilizzare un linguaggio di programmazione per produrre
un tabulato dei posti prenotati e la stampa del biglietto: le richieste sono “in linea” con la
data della traccia d’esame.
Oggi queste richieste non verrebbero fatte ed al loro posto sarebbe da realizzare interrogazioni SQL, come la seguente, che soddisfa quanto richiesto per il primo quesito.
SELECT
Concerti.data, Tipologie.tipologia, File_teatro.numero_fila,
Posti_prenotati.numero_posto, Clienti.cognome, Clienti.nome,
Posti_prenotati.descrizione
FROM
Concerti, Tipologie, File_concerti, Posti_Prenotati, Prenotazioni,
Clienti, File_teatro
WHERE
Concerti.id_concerto =File_concerti.id_concerto AND
Tipologie.id_tipologia=File_teatro.id_tipologia AND
File_teatro.id_fila_teatro=File_concerti.id_fila_posti AND
Prenotazioni.ID_prenotazione=Posti_prenotati.ID_prenotazione AND
File_concerti.ID_fila_concerto=Posti_prenotati.id_fila AND
Clienti.ID_cliente=Prenotazioni.id_cliente;
Una sua esecuzione visualizza l’elenco delle prenotazioni indicandone anche l’individuazione del posto prenotato, in termini di Numero Fila – Numero Posto, che devono essere stampati sul biglietto:
■■ Codice lato server
Non viene richiesto esplicitamente il codice lato server ma il fatto che nella creazione di una pagina
Web relativa all’evento devono essere presenti sia le date che il numero di posti disponibili presuppone che venga effettuata una interrogazione al database.
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
10
Band musicale (Mercurio 2001)
Lezione 3
Prima di proseguire descriviamo le modalità di accesso ai database remoti, che saranno utilizzate in tutte le successive soluzioni dei temi di maturità
Ambiente operativo e di sviluppo
L’ambiente operativo più utilizzato è la piattaforma xAMP composta da:
◗◗ x : sistema operativo Windows o Linux:
◗◗ A : Apache come server Web;
◗◗ M: MySQL come server di database;
◗◗ P : PHP come linguaggio di script lato server.
Come ambiente di sviluppo basta un semplice editor di testi oppure uno strumento di sviluppo
come Scite (SCIntilla based Text Editor), scaricabile gratuitamente dal sito http://www.scintilla.org/
SciTE o Dreamweaver, programma per la realizzazione di siti web prodotto da Macromedia (a pagamento).
Un’alternativa all’utilizzo del database MySQL è il database di Miscrosoft, cioè MS Access: descriviamo sinteticamente pro e contro dell’utilizzo di questo database:
◗◗ vantaggi per MS Access:
• è possibile creare facilmente il database utilizzando MS Office nel PC locale, disponendo di
una interfaccia facile e intuitiva;
• non necessita di definire password d’accesso al database: è sufficiente configurare i permessi
di scrittura sulla cartella che lo ospita sul server;
• il back up del database viene fatto semplicemente scaricando un solo file via ftp;
◗◗ svantaggi per MS Access:
• lo svantaggio più grosso di MS Access è la limitazione dichiarata da Microsoft sul numero di
connessioni contemporanee al database, che è di 15: Microsoft non garantisce Access per più
di 15 accessi contemporanei;
• i maggiori provider non effettuano gratuitamente il backup dei database MS Access, mentre, di
norma, eseguono il backup giornaliero dei database MS SQL Server e MySql.
La nostra scelta è ricaduta sull’utilizzo di MS Access in quanto risulta comodo per effettuare
sviluppo “parziale” di siti, come la soluzione dei temi d’esame, in quanto si possono semplicemente caricare i dati di prova in locale ed effettuare il test remoto solo alla fine, copiando
direttamente il database già popolato con una sola operazione ftp.
Inoltre buona parte dei temi che risolveremo prevedono la realizzazione di molte interrogazioni SQL indipendenti dalla realizzazione web: a tale scopo risulta molto comodo operare in
locale e MS Access offre una semplice interfaccia per poter scrivere e verificare le query.
Connessione al database
Il primo segmento di codice che scriviamo è quello che esegue la commissione con il database,
che viene proposto sia per il database MySQL che Access: nel seguito la soluzione che proporremo
utilizzerà Access, dato che è il database che stato utilizzato per la definizione delle tabelle. Viene
lasciato come esercizio per il lettore effettuare la codifica per MySQL.
Affinché MS Access funzioni correttamente è necessario che il database e la cartella che lo
contiene abbiano i permessi di scrittura anche se il database è in sola lettura.
Spesso i provider mettono a disposizione una apposita cartella con già configurati i diritti
necessari:
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
11
UdA 7
La prova scritta di informatica
È necessario avere questi permessi in quanto le librerie Microsoft che gestiscono l’accesso al
database creano dei file temporanei (*.ldb) allo stesso livello del database (*.mdb) e senza i
permessi di scrittura IIS restituirebbe un errore 500.
In ogni caso si consiglia di inserire il database direttamente nella root del sito dato che, negli
altri casi, dovreste dare i permessi di scrittura su tutto il percorso dell’albero del vostro sito
fino alla cartella dove avete collocato il file .mdb.
È inoltre doveroso ricordare che la gestione del database Microsoft non è prevista di default nei
server Linux: all’atto dell’acquisito dello spazio è necessario scegliere la soluzione che lo prevede.
Scriviamo ora un segmento di codice che effettua la connessione e lo memorizziamo in uno script
che chiameremo connettiMA.php: tale script verrà successivamente incluso in tutte le pagine che
necessitano di utilizzare il database.
Connessione ad Access
Il linguaggio php permette di utilizzare le librerie messe a disposizione da Windows tramite la direttiva new COM(): noi ci connetteremo quindi ad un database MS Access tramite la libreria ADODB.
Dalla root del nostro sito creiamo una cartella database e definiamo tre variabili:
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
12
Band musicale (Mercurio 2001)
Lezione 3
Nel seguito basterà sostituire il nome nella variabile $database mantenendo invariato il resto
dello script e richiamandolo con la clausola
//effettuo la connessione ADO ad Access
include ‘connettiMA.php’;
…
Se lo script va a buon fine viene effettuata la connessione e vengono messi a disposizione del programmatore i due oggetti $cn e $rs per poter effettuare le query e recuperare i dati “di ritorno” dal server.
Connessione a MySQL
La connessione a MySQL è stata ampiamente descritta in questo testo e quindi si riporta semplicemente il codice senza ulteriori spiegazioni.
Naturalmente affinché la connessione abbia successo è necessario che l’amministratore del
database garantisca l’accesso all’utente «prova» che può essere fatta manualmente oppure
con la seguente istruzione DCL:
GRANT SELECT,INSERT,UPDATE,DELETE
ON ‘band2001’.*
TO prova@localhost
IDENTIFIED BY ‘12345’
Ora è possibile utilizzare lo script di connessione: basta inserire il seguente segmento di
codice:
<?php
//termina se l’inclusione fallisce
require ‘connettiMS.php’
…
?>
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
13
UdA 7
La prova scritta di informatica
Ritorniamo ora alla soluzione della traccia e realizziamo una semplice pagina web di presentazione
come la seguente:
Il codice non necessita di spiegazioni in quanto si limita a richiamare la pagina prenota.php dove
verranno visualizzate le date dei concerti ed il numero di posti ancora disponibili per ciascuna:
La pagina prenota.php riporta nelle prime righe gli stessi tag di intestazione HTML: al centro definiamo una tabella dove presentare le due diverse date dei concerti, due immagini diverse e il numero di posti ancora disponibili.
La connessione al database viene effettuata includendo il file connettiMA.php appena descritto
(istruzione n.20 della figura seguente) e invocando la funzione open(x); come si può vedere alla
riga 22. Quindi predisponiamo la query che effettua una semplice somma dei posti liberi nelle diverse tipologie di posti, raggruppandola per le due diverse serate:
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
14
Band musicale (Mercurio 2001)
Lezione 3
Il risultato della interrogazione viene posto dal server nell’oggetto $rs, che sarà composto da due
record, uno per ogni serata, ciascuno contenente i due campi richiesti, data e totale_posti_liberi:
per comodità li leggiamo dal recordSet e li memorizziamo in quattro variabili:
Dopo aver rilasciato entrambi gli oggetti e quindi chiuso la connessione con il database visualizziamo due righe dove inseriamo nel codice HTML le variabili php appena definite:
Concludono lo script i tag HTML che completano la tabella con il link alle due pagine di prenotazione:
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
15
UdA 7
La prova scritta di informatica
La verifica del codice viene effettuata dopo aver “caricato” i file nelle cartelle del server locale di
prova, come nella seguente immagine:
Cliccando ora sul link “Disponibilità e date concerti” della home page otteniamo la seguente videata dove, a fianco delle date dei concert, i troviamo il numero di posti ancora disponibili:
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
16
Band musicale (Mercurio 2001)
Lezione 3
Cliccando su una delle due date (ad esempio la seconda) si procede con la fase di prenotazione,
che noi non realizziamo dato che non è richiesta dalla traccia, ma consigliamo come esempio per
il lettore:
P. Camagni, R. Nikolassy, Informatica per l’azienda, Edizione gialla, SIA, volume 2, © Ulrico Hoepli Editore S.p.A. 2014
17