1 Anno Informatica ABACUS

Documenti analoghi
Ministero dell Istruzione, dell Università e della Ricerca

2 Anno Informatica ABACUS

Anno 2013 Informatica ABACUS

Simulazione della seconda prova d esame Materia: Informatica

ESAME DI STATO DI ISTITUTO TECNICO

2011 Politecnico di Torino 1

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Esame di stato 2002 Banca del tempo

Anno 2017 Indirizzo: Informatica e telecomunicazioni Articolazione: Informatica Tipologia: C

N ######/02 Seconda prova scritta *$$$$$21115* *$$$$$21115* *$$$$$21115* *$$$$$21115* A T T E N Z I O N E

ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO SPERIMENTALE Progetto ABACUS SIMULAZIONE PROVA SCRITTA DI INFORMATICA

SCHEMA ER. Tutti i dati del carrello acquisti sono memorizzati nel database e quindi può essere costruito con più query.

Basi di Dati Corso di Laura in Informatica Umanistica

Esempio di database relazionale con l utilizzo del prodotto MySQL

3 Anno Informatica ABACUS

Esame di Basi di Dati, SOLUZIONE APPELLO 09/06/2009

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Sessione ordinaria 2005 Seconda prova scritta M070 - ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

DATABASE CLIENTIRAPPRESENTANTI

SOLUZIONE ESAME DI STATO 2015/2016 Indirizzo: ITSI - AMMINISTRAZIONE, FINANZA E MARKETING ARTICOLAZIONE SISTEMI INFORMATIVI AZIENDALI

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

LO SVOLGIMENTO DEL TEMA DI INFORMATICA

SISTEMI OPERATIVI, RETI, INTERNET

Esercitazione seconda prova Esame di Stato Prova di Informatica Gestionale ITC Programmatori e Mercurio. Note introduttive

Laboratorio di Basi di Dati

Sessione ordinaria 2003 Seconda prova scritta ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE Indirizzo: INFORMATICA CORSO SPERIMENTALE Progetto ABACUS

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

GESTIONE ABBONAMENTI RIVISTE

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

SECONDA PARTE.omissis. . omissis

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Concettuale. Giuseppe Amato

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

TEMI D ESAME DI INFORMATICA 2004 SISTEMI : RETE SCOLASTICA 2003 INFORMATICA: VIVAIO 2002 INFORMATICA: BANCA DEL TEMPO 2000 INFORMATICA: AGENZIA VIAGGI

Linguaggio SQL seconda parte

Anno scolastico INFORMATICA. 2. Conoscere e classificare il software

DATABASE PER IL WEB. Programmazione Web 1

Esercitazione: Interrogazioni SQL

Caratteristiche dei linguaggi per Database

SIMULAZIONE DI PROVA SCRITTA ESAME DI STATO DI ISTITUTO TECNICO 2014/15. Indirizzo: INFORMATICA E TELECOMUNICAZIONI (Nuovo ordinamento)

La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti.

Laboratorio Architettura

DBMS. Affidabilità. Privatezza dei dati. Efficienza. Efficacia. Un DBMS deve garantire:

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Capitolo 5. Soluzione: Soluzione in C:

DBMS (Data Base Management System)

Si definisca il relativo schema E/R (nella metodologia proposta a lezione) e si evidenzino eventuali vincoli inespressi e attributi derivati.

PHP Survival Kit (Ovvero gestire un database MySQL tramite PHP)

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

GESTIONE ESAMI di STATO

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

SOLUZIONE SECONDA PROVA INFORMATICA ITC ESAME DI STATO 2002/2003 TRAMONTANA

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE


SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SOLUZIONE TRACCIA D INFORMATICA ISTITUTO TECNICO INDUSTRIALE

SIMULAZIONE DI PROVA SCRITTA ESAME DI STATO DI ISTITUTO TECNICO 2014/15. Indirizzo: INFORMATICA E TELECOMUNICAZIONI (Nuovo ordinamento)

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

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

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

Pag Politecnico di Torino 1

GESTIONE VOTI SCOLASTICI

Linguaggi di Programmazione

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


Prova del 14/09/09. Considerare la seguente descrizione di un campeggio:

GESTIONE MAGAZZINO 1

Volumi di riferimento

MySQL Database Management System

OBIETTIVI DELL'ESERCITAZIONE

PROGRAMMA DI CLASSE 5AI

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali

Si considerino le seguenti specifiche relative alla realizzazione di un sistema informativo per la gestione di un sito di blog.

Sommario. Introduzione... 13

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

Utilizzare PHP 5. Le variabili GET e POST

GESTIONE MAGAZZINO 2

OBIETTIVI MINIMI Anno scolastico TIC-TIT. 1. Foglio elettronico: funzioni fondamentali (Excel)

ITI M. FARADAY Programmazione modulare a.s

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

ESEMPIO DI SOLUZIONE ESAME DI STATO 2013/2014 INFORMATICA (Testo valevole per i corsi di ordinamento e per i corsi sperimentali del Progetto Sirio )

RELAZIONE E-COMMERCE

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

CORSO di INFORMATICA e ARCHIVIAZIONE

Corso di Laboratorio di Basi di Dati

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

PHP e Structured Query Language

SOLUZIONE AL TEMA DI INFORMATICA (PROGETTO ABACUS)

MY SQL Guida MySQL di base

Indirizzo: ITIA-INFORMATICA E TELECOMUNICAZIONI ARTICOLAZIONE INFORMATICA Tema di: INFORMATICA

ESERCIZI SQL. Esercizio 1

MySQL progettazione di un database per un mobilificio

Esame di stato Mercurio 2005 Palestra

Informatica per le Scienze Umane. Introduzione al corso: programma

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

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE TRIENNIO: TERZA DISCIPLINA: INFORMATICA

Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola:

M070 - ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO DI ORDINAMENTO Indirizzo: INFORMATICA

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

Transcript:

Testo Un associazione «Banca del Tempo» vuole realizzare una base di dati per registrare e gestire le attività dell associazione. La «Banca del Tempo» (BdT) indica uno di quei sistemi organizzati di persone che si associano per scambiare servizi e/o saperi, attuando un aiuto reciproco. Attraverso la BdT le persone mettono a disposizione il proprio tempo per determinate prestazioni (effettuare una piccola riparazione in casa, preparare una torta, conversare in lingua straniera, ) aspettando di ricevere prestazioni da altri. Non circola denaro, tutte le prestazioni sono valutate in tempo, anche le attività di segreteria. Le prestazioni sono suddivise in categorie (lavori manuali, tecnologie, servizi di trasporto, bambini, attività sportive, ). Chi dà un ora del suo tempo a qualunque socio, riceve un ora di tempo da chiunque faccia parte della BdT. La base di dati dovrà mantenere le informazioni relative a ogni prestazione (quale prestazione, da chi è stata erogata, quale socio ha ricevuto quella prestazione, per quante ore e in quale data) per consentire anche interrogazioni di tipo statistico. Il territorio di riferimento della BdT è limitato (un quartiere in una grande città o un piccolo comune) ed è suddiviso in zone; la base di dati dovrà contenere la mappa del territorio e delle singole zone, in forma grafica. Si consideri la realtà di riferimento sopra descritta e si realizzino: 1 la progettazione concettuale della realtà indicata attraverso la produzione di uno schema (ad esempio ER, Entity-Relationship) con gli attributi di ogni entità, il tipo di ogni relazione e i suoi eventuali attributi; 2 una traduzione dello schema concettuale realizzato in uno schema logico (ad esempio secondo uno schema relazionale); 3 le seguenti interrogazioni espresse in algebra relazionale e/o in linguaggio SQL: a produrre l elenco dei soci (con cognome, nome e telefono) che hanno un «debito» nella BdT (coloro che hanno usufruito di ore di prestazioni in numero superiore a quelle erogate); b data una richiesta di prestazione, visualizzare la porzione di mappa del territorio nel quale si trova il socio richiedente e l elenco di tutti i soci che si trovano in quella zona in grado di erogare quella prestazione, visualizzandone il nome, cognome, indirizzo e numero di telefono; c visualizzare tutti i soci che fanno parte della segreteria e che offrono anche altri tipi di prestazione; d produrre un elenco delle prestazioni ordinato in modo decrescente secondo il numero di ore erogate per ciascuna prestazione. 4 (Facoltativo) Sviluppare il problema posto scegliendo una delle due seguenti proposte descrivendone le problematiche e le soluzioni tecniche adottabili: 4.1 l associazione BdT vuole realizzare un sito Web per rendere pubbliche le sue attività consentendo anche di effettuare online le interrogazioni della base di dati previste nel punto 3; 4.2 l associazione BdT vuole realizzare un sito Web attraverso il quale possa raccogliere l adesione online di altri associati, attraverso il riempimento di un modulo da inviare via Internet all associazione. 1

1.1 Ipotesi aggiuntive La BdT opera su un territorio suddiviso in zone e per ognuna di esse ogni socio della BdT può operare su più categorie di prestazione censite. Per ogni prestazione sono coinvolti due soci, uno come prestatore del servizio (erogatore) e l altro come beneficiario del medesimo (fruitore); le ore su cui viene conteggiata la prestazione saranno computate a debito per il fruitore e a credito per l erogatore. Per questioni di omogeneità nella gestione delle prestazioni, la segreteria viene considerata come un socio che non effettua alcuna prestazione ma che ne riceve dai soci che si rendono disponibili a operare per essa nel controllare le attività della BdT: essa figurerà pertanto come un socio sempre a debito. Le prestazioni sono contabilizzate per unità orarie indivisibili, ovvero nel caso di prestazioni inferiori all ora o che eccedano un numero intero di ore, la durata delle medesime viene arrotondata all unità superiore. Per quanto riguarda le mappe si ipotizza una soluzione in cui ogni mappa rappresenta tutto il territorio di interesse che è suddiviso in zone e dove la zona specifica viene individuata evidenziandone il perimetro tramite una bordatura colorata: tutti i file delle mappe una per ogni zona sono memorizzati in una specifica directory, mentre nella tabella relativa alle zone viene registrato il pathname dei file immagine (ad esempio «BdT\Img\Centro.jpg»). 1.2 Diagramma database PK Zone Id_Zona Descrizione Mappa PK Soci Id_Socio Nominativo Indirizzo Telefono FK1 Id_Zona PK Categorie Id_Categoria Descrizione Categorie_Soci PK,FK2 Id_Socio PK,FK1 Id_Categoria PK Prestazioni Id_Prestazione FK1 Id_Categoria Data Ore Note Ruoli PK,FK2 Id_Socio PK,FK1 Id_Prestazione Ruolo 2 Esempi di risoluzione delle prove scritte dell esame di Stato

1.3 Tabelle database Categorie È la tabella in cui sono censite le categorie di prestazione che la BdT prevede e che i soci sono in grado di espletare: Campo R Tipo Dim. Descrizione Id_Categoria PK Carattere 5 Codice identificativo categoria di prestazione Descrizione Carattere 20 Descrizione categoria di prestazione Chiave Primaria: Id_Categoria La seguente è una possibile istanza della tabella Categorie: Id_Categoria ASA CPT ELT FLG IDR INF MCN PLZ PST SGR Descrizione Assistenza anziani Carpenteria Elettronica/tecnica Falegnameria Idraulica Informatica Meccanica Pulizie Pasticceria Segreteria Categorie_Soci È la tabella in cui sono definite le possibili categorie di prestazione cui ogni singolo socio si è dichiarato disponibile a espletare: Campo R Tipo Dim. Descrizione Id_Socio PK FK Intero Codice identificativo socio Id_Categoria PK FK Carattere 5 Codice identificativo categoria prestazione Chiave Primaria: Id_Socio, Id_Categoria Chiave Esterna: Id_Categoria Categorie.Id_Categoria Chiave Esterna: Id_Socio Soci.Id_Socio La seguente è una possibile istanza della tabella Categorie_Soci: 3

Id_Socio Id_Categoria 1 FLG 1 MCN 2 PLZ 2 PST 2 SGR 3 ASA 3 MCN 4 ELT 4 INF 4 SGR 5 SGR 6 CPT 6 IDR 6 MCN 7 CPT 7 FLG 7 MCN Prestazioni È la tabella che costituisce il vero e proprio registro delle prestazioni effettuate: Campo R Tipo Dim. Descrizione Id_Prestazione PK Intero Codice identificativo prestazione Id_Categoria FK Carattere 5 Codice identificativo categoria prestazione Data Data/Ora Data esecuzione prestazione Ore Intero Ore impiegate per espletare la prestazione Note Carattere 50 Note sull esecuzione prestazione Chiave Primaria: Id_Prestazione Chiave Esterna: Id_Categoria Categorie.Id_Categoria La seguente è una possibile istanza della tabella Prestazioni: Id_Prestazione Id_Categoria Data Ore Note 1 SGR 10/05/2002 10:30:00 1 Revisione archivio pratiche 2 MCN 10/05/2002 12:00:00 2 Sostituiti freni auto 3 IDR 11/06/2002 08:45:00 2 Sostituito flessibile lavandino 4 ASA 20/03/2002 20:00:00 1 Compagnia pensionato 5 PLZ 01/02/2002 07:30:00 3 Pulizia appartamento 6 PST 01/01/2002 12:00:00 2 Preparata torta per compleanno 7 SGR 15/02/2002 14:00:00 3 Revisione agenda 8 INF 06/04/2002 23:30:00 5 Ripristino database BdT 9 SGR 22/03/2002 01:00:00 1 Caricamento dati BdT 4 Esempi di risoluzione delle prove scritte dell esame di Stato

Ruoli In questa tabella viene registrato per ogni prestazione il ruolo che ogni socio ha rivestito (erogatore/fruitore); pertanto per ogni prestazione effettuata questa tabella conterrà due righe, quella relativa al socio erogatore e quella relativa al socio fruitore: Campo R Tipo Dim. Descrizione Id_Socio PK Intero Codice identificativo socio Id_Prestazione PK Intero Codice identificativo prestazione Ruolo Carattere 1 Ruolo del socio nella prestazione (E: Erogatore, F: Fruitore) Chiave Primaria: Id_Socio, Id_Prestazione Chiave Esterna: Id_Prestazione Prestazioni.Id_Prestazione Chiave Esterna: Id_Socio Soci.Id_Socio La seguente è una possibile istanza della tabella Ruoli: Id_Socio Id_Prestazione Ruolo 1 5 F 2 1 E 2 3 F 2 5 E 3 4 E 3 8 F 4 2 F 4 8 E 5 7 E 5 9 E 6 2 E 6 3 E 6 4 F 99 1 F 99 7 F 99 9 F Soci È la tabella in cui sono memorizzati i dati dei soci della BdT: Campo R Tipo Dim. Descrizione Id_Socio PK Intero Codice identificativo socio (valore numerico auto incrementante) Nominativo Carattere 30 Cognome e nome Indirizzo Carattere 30 Indirizzo Telefono Carattere 15 Telefono Id_Zona FK Intero Identificativo zona di appartenenza Chiave Primaria: Id_Socio Chiave Esterna: Id_Zona Zone.Id_Zona 5

La seguente è una possibile istanza della tabella Soci: Id_Socio Nominativo Indirizzo Telefono Id_Zona 1 Rossi Marco Via del Mare, 10 578164 10 2 Giannini Maria Via di Colline, 14 854224 3 3 Martelli Roberto Via Degli Avvalorati, 1 803161 1 4 Bellini Giovanni Via Guerrazzi, 52 863044 5 5 Bianchi Paolo Via Giovanni XXIII,18 576144 11 6 Tedeschi Mario Viale Marconi, 65 857112 3 7 Testi Marco Via del Fagiano, 100 857123 3 99 Segreteria BdT P.zza Roma, 45 863128 5 Zone È la tabella in cui sono memorizzati i dati delle zone in cui opera la BdT. La sua struttura è definita come segue. Campo R Tipo Dim. Descrizione Id_Zona PK Intero Codice identificativo zona Descrizione Carattere 50 Descrizione zona Mappa Testo 100 Pathname immagine zona Chiave Primaria: Id_Zona La seguente è una possibile istanza della tabella Zone: Id_Zona Descrizione Mappa 1 Centro Img\Centro.jpg 2 Venezia Img\Venezia.jpg 3 Colline Img\Colline.jpg 4 Sorgenti Img\Sorgenti.jpg 5 Fabbricotti Img\Fabbricotti.jpg 6 S. Marco Img\SMarco.jpg 7 Corea Img\Corea.jpg 8 Shangai Img\Shangai.jpg 9 Ardenza Img\Ardenza.jpg 10 Antignano Img\Antignano.jpg 11 Montenero Img\Montenero.jpg 12 Scopaia Img\Scopaia.jpg 1.4 DB-schema CREATE TABLE Categorie( Id_Categoria VARCHAR(5) NOT NULL, Descrizione VARCHAR(20) NOT NULL, CONSTRAINT PrimaryKey PRIMARY KEY(Id_Categoria) ); 6 Esempi di risoluzione delle prove scritte dell esame di Stato

CREATE TABLE Prestazioni( Id_Prestazione INTEGER NOT NULL, Id_Categoria VARCHAR(5) NOT NULL, Data DATETIME NOT NULL, Ore INTEGER NOT NULL, Note VARCHAR(50), CONSTRAINT Categorie_Prestazioni FOREIGN KEY(Id_Categoria) REFERENCES Categorie(Id_Categoria), CONSTRAINT PrimaryKey PRIMARY KEY(Id_Prestazione) ); CREATE TABLE Zone( Id_Zona INTEGER NOT NULL, Descrizione VARCHAR(50) NOT NULL, Mappa VARCHAR(100) NOT NULL, CONSTRAINT PrimaryKey PRIMARY KEY(Id_Zona) ); CREATE TABLE Soci( Id_Socio INTEGER NOT NULL AUTO_INCREMENT, Nominativo VARCHAR(30) NOT NULL, Indirizzo VARCHAR(30) NOT NULL, Telefono VARCHAR(15) NOT NULL, Id_Zona INTEGER NOT NULL, CONSTRAINT PrimaryKey PRIMARY KEY(Id_Socio), CONSTRAINT Zone_Soci FOREIGN KEY(Id_Zona) REFERENCES Zone(Id_Zona) ); CREATE TABLE Categorie_Soci( Id_Socio INTEGER NOT NULL, Id_Categoria VARCHAR(5) NOT NULL, CONSTRAINT CategorieSoci_Categorie FOREIGN KEY(Id_Categoria) REFERENCES Categorie(Id_Categoria), CONSTRAINT PrimaryKey PRIMARY KEY(Id_Socio, Id_Categoria), CONSTRAINT CategorieSoci_Soci FOREIGN KEY(Id_Socio) REFERENCES Soci(Id_Socio) ); CREATE TABLE Ruoli( Id_Socio INTEGER NOT NULL, Id_Prestazione INTEGER NOT NULL, Ruolo VARCHAR(1) NOT NULL, CONSTRAINT Prestazioni_Ruoli FOREIGN KEY(Id_Prestazione) REFERENCES Prestazioni(Id_Prestazione), CONSTRAINT PrimaryKey PRIMARY KEY(Id_Socio, Id_Prestazione), CONSTRAINT Soci_Ruoli FOREIGN KEY(Id_Socio) REFERENCES Soci(Id_Socio) ); 7

1.5 Query a SELECT Soci.Id_Socio, Nominativo, D.Debito-C.Credito AS DebitoOre FROM Soci, (SELECT Id_Socio, SUM(Ore) AS Credito FROM Prestazioni, Ruoli WHERE Prestazioni.Id_Prestazione = Ruoli.Id_Prestazione AND Ruolo='E' GROUP BY Id_socio) AS C, (SELECT Id_Socio, SUM(Ore) AS Debito FROM Prestazioni, Ruoli WHERE Prestazioni.Id_Prestazione = Ruoli.Id_Prestazione AND Ruolo='F' GROUP BY Id_socio) AS D WHERE Soci.Id_Socio = C.Id_Socio AND Soci.Id_Socio = D.Id_Socio AND D.Debito > C.Credito; b La richiesta è stata risolta tramite una query nidificata in cui non sono stati indicati i valori del socio richiedente e della categoria di servizio: la query più interna seleziona il codice della zona a cui appartiene il socio richiedente, mentre quella più esterna seleziona, tra i soci di tale zona, quelli in grado di fornire il servizio richiesto (la visualizzazione grafica della zona è realizzata nel seguito mediante uno script PHP). SELECT Soci.*, Zone.Mappa FROM Soci, Categorie_Soci, Zone WHERE Soci.Id_Socio = Categorie_Soci.Id_Socio AND Zone.Id_Zona = Soci.Id_Zona AND Categorie_Soci.Id_Categoria = ' ' AND Zone.Id_Zona IN ( SELECT Zone.Id_zona FROM Soci, Zone WHERE Zone.Id_Zona = Soci.Id_Zona AND Soci.Id_Socio = ); c SELECT Soci.Id_Socio, Nominativo FROM Soci, Categorie_Soci WHERE Soci.Id_Socio = Categorie_Soci.Id_Socio AND Soci.Id_Socio IN ( SELECT Id_Socio FROM Categorie_Soci WHERE Id_Categoria='SGR') GROUP BY Soci.Id_Socio, Nominativo HAVING COUNT(*) > 1; 8 Esempi di risoluzione delle prove scritte dell esame di Stato

d Soluzione 1 (tutte le prestazioni) SELECT * FROM Prestazioni ORDER BY Ore DESC, Data; Soluzione 2 (per categoria di prestazione) SELECT Id_Categoria, SUM(Ore) AS Ore_Spese FROM Prestazioni GROUP BY Id_Categoria ORDER BY SUM(Ore) DESC; 1.6 Sito web Date le caratteristiche e la natura dell associazione che probabilmente non dispone di personale specializzato per la gestione di un server per ospitare il sito web, la soluzione più indicata è quella di acquistare un servizio di hosting del sito da un fornitore di servizi web (spesso è possibile acquistare il servizio di hosting del sito insieme alla registrazione del dominio che in questo caso potrebbe essere www.bancadeltempo.org): questa soluzione è senz altro la migliore, tenuto conto che il sito deve essere operativo 24 ore su 24 e 7 giorni su 7, ed è anche economica. È necessario acquistare, oltre allo spazio web per ospitare il sito, l integrazione dell interprete PHP nel server web e la disponibilità di un database My-SQL per la gestione del database: si tratta in ogni caso di un pacchetto molto comune nell offerta dei fornitori di servizi web. Come esempio di pagina web dinamica che costituisce il sito della BdT presentiamo 2 script PHP (il primo per inserire la richiesta e il secondo per visualizzare la relativa risposta) che realizzano il comportamento richiesto per la query (b). Si è ipotizzato che il server My-SQL sia in esecuzione sullo stesso computer del web server e che l accesso al database «BdT» venga effettuato come utente «root» privo di password; inoltre le pagine web sono completamente prive di struttura grafica. <html> <head> <title>individuazione soci</title> </head> <body> Selezionare socio richiedente e categoria di prestazione richiesta: $connection = mysqli_connect("localhost", "root", "", "BdT"); if (mysqli_connect_errno($connection)) 9

echo "Errore di connessione al DBMS My-SQL." ; <form action="risposta.php" method="get"> <select name="socio"> $query = "SELECT Id_Socio, Nominativo FROM Soci;"; $result = mysqli_query($connection, $query); if (!$result) echo "Errore esecuzione query SQL." ; if (mysqli_num_rows($result) == 0) echo "Nessun socio presente." ; while ($row = mysqli_fetch_array($result)) echo "<option value=\"$row[0]\">$row[1]</option>"; mysqli_free_result($result); </select> <br> <select name="categoria"> $query = "SELECT Id_categoria, Descrizione FROM Categorie;"; $result = mysqli_query($connection, $query); if (!$result) echo "Errore esecuzione query SQL."; if (mysqli_num_rows($result) == 0) echo "Nessuna categoria registrata." ; while ($row = mysqli_fetch_array($result)) echo "<option value=\"$row[0]\">$row[1]</option>"; 10 Esempi di risoluzione delle prove scritte dell esame di Stato

mysqli_free_result($result); mysqli_close($connection); </select> <br> <input type="submit" value="cerca"> <br> </form> </body> </html> <html> <head> <title>elenco soci</title> </head> <body> $connection = mysqli_connect("localhost", "root", "", "BdT"); if (mysqli_connect_errno($connection)) echo "Errore di connessione al DBMS My-SQL." ; $query = " SELECT Soci.*, Zone.Mappa FROM Soci,Zone WHERE Zone.Id_Zona = Soci.Id_Zona AND Soci.Id_Socio = $_GET[socio];"; $result = mysqli_query($connection, $query); if (!$result) echo "Errore esecuzione query SQL." ; if (mysqli_num_rows($result) == 0) echo "Nessuna mappa trovata." ; else $row = mysqli_fetch_assoc($result); $mappa = $row['mappa']; mysqli_free_result($result); $query = " SELECT Soci.*, Zone.Descrizione FROM Soci, Categorie_Soci, Zone 11

WHERE Soci.Id_Socio = Categorie_Soci.Id_Socio AND Zone.Id_Zona = Soci.Id_Zona AND Categorie_Soci.Id_Categoria = '$_GET[categoria]' AND Soci.Id_Socio <> $_GET[socio] AND Zone.Id_Zona IN ( SELECT Zone.Id_zona FROM Soci, Zone WHERE Zone.Id_Zona = Soci.Id_Zona AND Soci.Id_Socio = $_GET[socio]);"; $result = mysqli_query($connection, $query); if (!$result) echo "Errore esecuzione query SQL." ; if (mysqli_num_rows($result) == 0) echo "Nessun socio trovato." ; <table border> <caption><b>soci per Zona</b></caption> <thead> <tr> <th>id socio</th> <th>nominativo</th> <th>indirizzo</th> <th>telefono</th> <th>id zona</th> <th>zona</th> </tr> </thead> <tbody> while ($row = mysqli_fetch_assoc($result)) <tr> <td> echo ($row['id_socio']); </td> <td> echo ($row['nominativo']); </td> <td> echo ($row['indirizzo']); </td> <td> echo ($row['telefono']); </td> <td> echo ($row['id_zona']); </td> <td> echo ($row['descrizione']); </td> </tr> 12 Esempi di risoluzione delle prove scritte dell esame di Stato

mysqli_free_result($result); echo "</tbody>\n"; echo "</table>\n"; echo "<br>\n"; echo "Mappa socio richiedente\n"; echo "<br>\n"; echo "<img src=\"$mappa\">"; echo "<br>\n"; mysqli_close($connection); </body> </html> Sono riportate di seguito le pagine web dinamiche create dai due script PHP: Come esempio di pagina web dinamica che consente di aggiungere un nuovo socio al database della BdT presentiamo 2 script PHP (il primo per visualizzare il modulo di richiesta dei dati e il secondo per inserire i dati nel database). Si è ipotizzato che il server My-SQL sia in esecuzione sullo stesso computer del web server e che l accesso al database «BdT» venga effettuato 13

come utente «root» privo di password; anche in questo caso le pagine web sono completamente prive di struttura grafica. <html> <head> <title>dati</title> </head> <body> Selezionare la zona di residenza, la categoria di servizio offerto e inserire i propri dati: $connection = mysqli_connect("localhost", "root", "", "BdT"); if (mysqli_connect_errno($connection)) echo "Errore di connessione al DBMS My-SQL." ; <form action="iscrizione.php" method="post"> <label for="zona">zona</label> <select id="zona" name="zona"> $query = "SELECT ID_zona, Descrizione FROM Zone;"; $result = mysqli_query($connection, $query); if (!$result) echo "Errore esecuzione query SQL."; while ($row = mysqli_fetch_array($result)) echo "<option value=\"$row[0]\">$row[1]</option>"; mysqli_free_result($result); </select><br> <label for="category">categoria</label> <select id="category" name="categoria"> $query = "SELECT ID_categoria, Descrizione FROM Categorie;"; $result = mysqli_query($connection, $query); if (!$result) echo "Errore esecuzione query SQL."; while ($row = mysqli_fetch_array($result)) echo "<option value=\"$row[0]\">$row[1]</option>"; mysqli_free_result($result); 14 Esempi di risoluzione delle prove scritte dell esame di Stato

mysqli_close($connection); </select><br> <label for="name">nominativo</label> <input id="name" name="nominativo" type="text" required><br> <label for="address">indirizzo</label> <input id="address" name="indirizzo" type="text" required><br> <label for="telephone">telefono</label> <input id="telephone" name="telefono" type="text" required><br> <input type="submit" value="iscriviti"> </form> </body> </html> <html> <head> <title>iscrizione</title> </head> <body> $nominativo = $_POST['nominativo']; $indirizzo = $_POST['indirizzo']; $telefono = $_POST['telefono']; $ID_zona = $_POST['zona']; $ID_categoria = $_POST['categoria']; if ( strlen($nominativo)!= 0 && strlen($indirizzo)!= 0 && strlen($telefono)!= 0) $connection = mysqli_connect("localhost","root","","bdt"); if (mysqli_connect_errno($connection)) echo "Errore di connessione al DBMS My-SQL."; $query = " INSERT INTO Soci (nominativo, indirizzo, telefono, ID_zona) VALUES ('$nominativo','$indirizzo','$telefono','$id_zona');"; if (!mysqli_query($connection, $query)) echo "Errore esecuzione comando SQL."; $query = " SELECT ID_Socio FROM Soci WHERE nominativo = '$nominativo' AND indirizzo = '$indirizzo' AND telefono = '$telefono';"; $result = mysqli_query($connection, $query); if (!$result) 15

echo "Errore esecuzione query SQL." ; if (mysqli_num_rows($result) == 0) echo "Errore esecuzione query SQL."; $row = mysqli_fetch_array($result); $ID_socio = $row[0]; $query = " INSERT INTO Categorie_Soci (ID_socio, ID_categoria) VALUES ($ID_socio, '$ID_categoria');"; if (!mysqli_query($connection, $query)) echo "Errore esecuzione comando SQL." ; mysqli_free_result($result); mysqli_close($connection); echo " L utente $nominativo &egrave stato aggiunto al database con identificativo $ID_socio."; else echo "Dati inseriti non validi."; </body> </html> È riportato di seguito il modulo web di iscrizione di un nuovo utente: 16 Esempi di risoluzione delle prove scritte dell esame di Stato