MySQL. Esercizio 1. Soluzione

Documenti analoghi
Esercitazione Google Maps

Esercitazione Highcharts

Array. // utente pippo $utente1 = array( username => pippo, password => pippo123, ruolo => amministratore );

Phpmyadmin. Creazione Database

Laboratorio Progettazione Web Modello di applicazione Web

JQuery. <script src=" </script> <script src= js/main.

Progettazione Web. Laboratorio di. Ambiente di Sviluppo. Angelica Lo Duca

MySQL Migration Toolkit

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 4

Come trasferire il vostro sito in Joomla da locale in remoto?

Laboratorio Progettazione Web Modello di applicazione Web

Basi di dati Applicazioni web in PHP per l interrogazione di basi di dati Laboratorio #5

Open Refine. Per la manipolazione dei dati, Open Refine usa il linguaggio GREL (General Refine Expression Language) 1.

DOCUMENTO DI INTEGRAZIONE CON GAMMA EVOLUTION INSTALLAZIONE DEL PLUGIN IN TUSTENA CRM

Il linguaggio PHP. Insegnarvi tutto il PHP? Non esattamente Obiettivo: insegnarvi ad interagire via web con una base dati

Connessione con MySQL

Parte 6 JSON, Web Storage API, funzioni JavaScript e user script

Indice generale. Introduzione...xiii. Uno sguardo più da vicino a JavaScript...17

La connessione ai database MySQL tramite script PHP versione 5.5

Appunti della lezione di Database del 3/11/2016 (pomeriggio)

Versione 1.0 Data 25/06/2014. Commenti Dichiarazione di copyright. Abstract Questo documento spiega come installare MOVIO in locale.

Istruzioni per il cambio della password della casella di posta

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 5

Come creare un modulo per Joomla?

Laboratorio Progettazione Web Le funzioni in PHP. Andrea Marchetti IIT-CNR 2016/2017

Configurazione di Eclipse con Liferay 5.2.2/6.0.6/6.1.0 Mac/Linux

Laboratorio Progettazione Web PHP e FORMs HTML - Lezione 8. Andrea Marchetti IIT-CNR 2011/2012

Indice generale. Introduzione. Capitolo 1 Installazione Introduzione a PHP...11

Parte 6 JSON, Web Storage API, funzioni JavaScript e user script

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 4

CREARE UN SITO WEB CON IL CMS

Connessione con MySQL

Tipi di dato, variabili, istruzioni

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

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

ODOO può essere installato su Linux, Windows e Macintosh, ma la piattaforma di riferimento indicata da Odoo sa è Linux Ubuntu.

2011 Politecnico di Torino 1

Jamio openwork data source connector for QlikView

Laboratorio Progettazione Web Modello di applicazione Web

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Laboratorio di Progettazione Web

GUIDA ALL INSERIMENTO DI TESTI E DOCUMENTI NEL NUOVO SITO DEL COMUNE DI CERVIA Versione 1.0

Relazione MajoGEN. Generatore web di segnali! Matteo Mosconi & Gabriele De Rosa - 5 Febbraio 2014 RELAZIONE MAJOGEN

CORSO DI PROGRAMMAZIONE

QuizFaber. nel «CLOUD»

Foglio Elettronico Lezione 1

Manuale Sistema F Platinum Nuova gestione operatori

Tecniche della Programmazione: Note sull uso del DEVC++

PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE

Opss. Vedi un po tu anche il sito linux.com è fatto con Joomla

Configurazione database MySQL

PROGRAMMA DEL CORSO MASTER IN WEB DESIGN & DEVELOPER

Creare l array presentato nei lucidi ([pippo, pluto, etc])

Il proprietario di una catena di negozi vuole confrontare il reddito (in euro) dei suoi 5 negozi, riportato nella seguente tabella

Installare Drupal 7 Pubblicato su (

Livello applicazione. Fondamenti di Informatica

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

La struttura di un tema WordPress

Installazione di EasyPhp. Avviare EasyPhp. La finestra di amministrazione di EasyPhp

Laboratorio Progettazione Web Modello di applicazione Web

SQL per le applicazioni D B M G

SQL per le applicazioni D B M G

Ricerca obiettivo. Pag. 1

Scelta del Browser. Accesso Area Redazione

2011 Politecnico di Torino 1

2011 Politecnico di Torino 1

MySQL 2 (maisiquel tu ovvero gestire un database MySQL tramite LibreOffice)

Laboratorio di Progettazione Web

LABORATORIO DI INFORMATICA. Prof.ssa Patrizia Tarantino

Tutorial Calcolatrice

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

CREARE UN SITO WEB CON IL CMS

PHP & MySQL. Giselda De Vita

CouchSurfing. Progetto di Sistemi Mobili e Pervasivi di Gabriele Giovenco a.a. 2010/2011

Autodesk Education Community

Personalizzazione del report

Tecnologie e applicazioni web JSON Web Token (JWT)

Scritto da Administrator Sabato 16 Gennaio :53 - Ultimo aggiornamento Venerdì 22 Gennaio :06

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

Digitiamo il codice base di una pagina secondo lo standard HTML5 e inseriamo un titolo <h1> con il testo Benvenuti sulla mia homepage


Servizi Sanitari online

XAMPP Installazione e configurazione

Corso base PHP Copyright (c) 2011 Antonio Gallo

Come aggiungere al nostro sito web il login basato su Facebook

Procedura di installazione rrunnweb

Esercitazione 3 di Linguaggi e Tecnologie per il Web

Manuale d istruzioned

Installare Apache, PHP, MySQL sul Raspberry PI Zero

Programmazione Web D B M G. Il linguaggio PHP

Istruzioni per l apertura dei documenti in Firma Digitale (p7m)

Guida introduttiva al PHP

Corso di formazione Office

Il programma di oggi. Gli indici. Ottimizzazione. Metodi per la Gestione dei Dati (lezioni di laboratorio)

Laboratorio di Basi di Dati

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

Transcript:

MySQL Esercizio 1 Implementare un servizio di API, che permette di accedere alle informazioni contenute nel dataset http://dati.toscana.it/dataset/lista-comuni-colpiti. In particolare, l API deve permettere la consultazione delle seguenti informazioni: per ogni comune le coordinate geografiche per ogni provincia la popolazione prima del sisma Soluzione Come prima cosa, dobbiamo correggere alcuni problemi di codifica del dataset. Tramite Phpmyadmin modifichiamo i seguenti record: sostituire l apostrofo di Sant Angelo sul Nera con un normale apostrofo ripetere l operazione anche per Sant anatolia di Narco. Per fare questo, accedere a Phpmyadmin, selezionare il database di interesse e la tabella contenente la lista dei comuni. Nel menu in alto selezionare il tasto mostra e scorrere l elenco dei record fino a trovare il primo record di interesse. Premere sul tasto modifica in corrispondenza del record. Nel form che si apre correggere il campo Comune. Ripetere l operazione anche per l altro record. Strutturiamo l esercizio come un progetto, che poi utilizzeremo anche negli esercizi successivi. Nella htdocs di XAMPP creiamo una cartella progetto, dentro cui creiamo altre due cartelle: api, che conterrà tutte le api php che andremo a sviluppare libraries, che conterrà tutte le librerie php già esistenti All interno della cartella libraries posizioniamo la libreria dblibrary.php, che permette la gestione dell interazione tra PHP e MySQL. Creiamo ora un file config.php che posizioniamo nella cartella api. Questo file contiene i parametri di configurazione della connessione al database e aprirà la connessione al database. Il file config.php dovrà essere incluso in tutti gli script php che effettueranno l accesso al database. Come prima cosa, il file config.php include la dblibrary per poter usare la funzione opendb: include(../libraries/dblibrary.php ); Abbiamo aggiunto al file dblibrary.php il percorso per accedere al file. Il file config.php si trova nella directory api. Per accedere al file dblibrary.php, dobbiamo tornare indietro di una directory e poi entrare nella cartella libraries. Il simbolo.. permette di tornare indietro di una directory, mentre lo / permette di accedere alla directory che segue. In ambiente Windows, occorre sostituire il carattere / con il carattere \: include(..\libraries\dblibrary.php ); 1

A questo punto possiamo invocare la funzione opendb della dblibrary, passando dei parametri che abbiamo settato in precedenza attraverso delle variabili: $database = Esercitazione ; $username = root ; $password = ; $servername = localhost ; $db = opendb($database, $password, $username, $servername); La connessione al database è ora aperta ed è memorizzata nella variabile $db. Il file completo è il seguente: include(../libraries/dblibrary.php ); $database = Esercitazione ; $username = root ; $password = ; $servername = localhost ; $db = opendb($database, $password, $username, $servername); Ricordiamoci che sotto Windows, dobbiamo sostituire il carattere / con \. Ora possiamo passare all implementazione vera e propria della nostra API. Come prima cosa, l esercizio chiede di implementare una API che per ogni comune mostra le coordinate geografiche. Nella cartella API creiamo un file comuni.php che restituirà per ogni comune le coordinate geografiche. Come prima cosa, includiamo il file config.php che ci permette di aprire la connessione al database: Visto che il file config.php si trova nella stessa cartella del file comuni.php, non c è bisogno di aggiungere altri percorsi al file. Non c è bisogno di includere la dblibrary perché è già inclusa nel file config.php Una volta aperta la connessione, ricordiamoci subito di chiuderla in fondo, altrimenti poi potremmo dimenticarcene: // corpo di comuni.php 2

Ora, dobbiamo sostituire il commento // corpo di comuni.php con il corpo vero e proprio della api. Ricordiamoci di lasciare la closedb in fondo allo script. Supponiamo che nel nostro database Esercitazione, abbiamo memorizzato la tabella con il nome ComuniTerremotati. Dalla tabella dobbiamo estrarre il nome del comune e le coordinate geografiche (latitudine e longitudine). La query che dobbiamo fare è la seguente: SELECT Comune, latitude, longitude FROM ComuniTerremotati Possiamo passare questa query alla funzione select della dblibrary. Stampiamo anche il risultato tramite la funzione var_dump, che può essere utilizzata per stampare un array: $sql = SELECT Comune, latitude, longitude FROM ComuniTerremotati ; var_dump($recs); Il codice completo dello script comuni.php ottenuto fino ad ora è il seguente: $sql = SELECT Comune, latitude, longitude FROM ComuniTerremotati ; var_dump($recs); Guardando la stampa dell array, si può notare che la latitudine e la longitudine sono stampati come stringhe. Questo non va bene, perché in realtà si tratta di decimali. Occorre quindi sistemare il codice in modo da convertire le stringhe in float. Per fare questo, dobbiamo scorrere l array $recs, cercare le chiavi latitude e longitude e convertire il valore corrispondente in float. L array $recs è un array numerico, quindi, per accedere ai suoi elementi, possiamo usare un ciclo for: // corpo del for Ogni campo dell array $recs è a sua volta un array, questa volta di tipo associativo. Quindi per scorrere ogni elemento dell array $recs possiamo usare un ciclo foreach: // corpo del foreach 3

Se il campo chiave coincide con latitude o longitude, occorre fare la conversione di valore a float, altrimenti non c è bisogno di fare niente: if(($chiave == latitude ) ($chiave == longitude )) $recs[$i][$chiave] = floatval($valore); Da notare che il campo che vogliamo modificare si trova nella posizione i-esima dell array $recs in corrispondenza della chiave che stiamo analizzando. Quindi dobbiamo sostituire al valore corrente di $recs[$i][$chiave] lo stesso valore convertito però in float. Per rendere i dati accessibili a tutti i tipi di client, la nostra API dovrebbe fornire i risultati in JSON. JSON (JavaScript Object Notation) è un formato utilizzato per lo scambio dei dati in applicazioni client-server. Il JSON è un formato che serve per codificare un array in una stringa. In JSON un array numerico è rappresentato come un elenco di elementi separati da virgola e racchiusi tra parentesi quadre. Ad esempio: [ cane, gatto, topo ] Un array associativo invece è rappresentato da coppie chiave valore separate dalla virgola e racchiuse tra parentesi graffe. Ogni coppia chiave valore è rappresentata nel seguente modo: chiave : valore Un esempio di array associativo è il seguente: animale : cane, fiore : rosa, frutto : mela In PHP, affinché una API ritorni un array in JSON è necessario eseguire due passi: 1. includere all inizio dell API la chiamata ad una funzione che setta il formato del risultato in json 2. codificare l array risultato in json attraverso la funzione json_encode e stampare il risultato: Nel nostro caso, togliamo la stampa fatta con la var_dump e inseriamo il codice appena definito, facendo attenzione ad inserire la chiamata alla header all inizio del documento e la json_encode al posto della var_dump. Il risultato è il seguente: 4

$sql = SELECT Comune, latitude, longitude FROM ComuniTerremotati ; if(($chiave == latitude ) ($chiave == longitude )) $recs[$i][$chiave] = floatval($valore); Visualizzando il risultato dal browser, notiamo che non è molto chiaro. Per visualizzare meglio un json, possiamo installare un plugin per il nostro browser. Il plugin si chiama JSON View. Per installare il plugin su Google Chrome, andiamo nel menu Impostazioni, selezioniamo estensioni, poi prova altre estensioni. Nella barra di ricerca digitiamo jsonview e poi installiamolo. Per installare il plugin su Safari, selezionare il menu Safari, poi estensioni, cercare JSON ed installare json-lite. Per installare il plugin su Firefox, dal menu in alto a destra selezionare componenti aggiuntivi, quindi estensioni e cercare jsonview. A questo punto possiamo passare alla seconda parte dell esercizio, che richiede la creazione di una API che mostri per ogni provincia la popolazione prima del sisma. Per prima cosa rinominiamo il campo della tabella Popolazione prima del sisma in popolazione, per evitare problemi dovuti agli spazi. Per fare questo, usiamo Phpmyadmin, selezioniamo la tabella e quindi in corrispondenza del campo Popolazione prima del sisma selezionare modifica e cambiare il nome in Popolazione. Premere il tasto Salva. Ora scriviamo la query, che deve fare la somma di tutte le popolazioni prima del sisma per ogni provincia. Quindi, raggruppiamo i record per provincia e facciamo la somma del campo popolazione, usando l istruzione GROUP BY: SELECT SUM(Popolazione) AS Popolazione, Provincia FROM ComuniTerremotati GROUP BY Provincia Dentro la cartella api creiamo un file popolazione.php che mostrerà il risultato della nostra query. Come per il file comuni.php, includiamo il file config.php e impostiamo come json il tipo di risultato : 5

// corpo di popolazione.php Ora possiamo eseguire la query: $sql = SELECT SUM(Popolazione) AS Popolazione, Provincia FROM ComuniTerremotati GROUP BY Provincia ; e stampare il risultato: Come nel caso della latitudine e della longitudine per l API comuni.php, anche in popolazione.php il campo popolazione deve essere un intero. Pertanto va fatta la conversione da stringa a intero attraverso la funzione intval. Copiamo il codice scritto per comuni.php, avendo l accortezza di modificare latitudine e longitudine con popolazione e la funzione floatval con intval: if(($chiave == Popolazione )) $recs[$i][$chiave] = intval($valore); Il codice completo dello script popolazione.php è il seguente: $sql = SELECT SUM(Popolazione), Provincia FROM ComuniTerremotati GROUP BY Provincia ; if(($chiave == Popolazione )) $recs[$i][$chiave] = intval($valore); 6

Esercizio 2 Modificare il file comuni.php in modo da ricevere in ingresso tramite GET un parametro type. In base al valore del campo type, il file restituisce un risultato diverso: se type = coordinate, lo script restituisce le coordinate geografiche se type = url, lo script restituisce l url del comune 7