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