MOD2 UTILIZZO DI EASYPHP PER GESTIRE DB - Ing. Daniele Corti
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
MOD2 UTILIZZO DI EASYPHP PER GESTIRE DB Ing. Daniele Corti Copyright © Ing. Daniele Corti 2013 www.ingdanielecorti.it Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni internazionali. Ver.1.0 1
PREREQUISITI Conoscere il modello relazione di una base di dati. Realizzare interrogazioni su una base di dati. OBIETTIVI Riconoscere le funzionalità di base dell’ambiente easyPHP. Gestire i database in easyPHP. ARGOMENTI Concetti di base. La piattaforma easyPHP. Utilizzo di easyPHP portable. Panoramica su phpMyAdmin. 2
MOD3. UTILIZZO DI EASYPHP PER GESTIRE DB CONCETTI DI BASE Lo scopo di questo progetto è utilizzare un Server Web e costruire un database (DB) accessibile dal Web utilizzando il server Apache (si pronuncia Apaci anche se italianizzato diventa apasch), il linguaggio PHP e il DBMS (DataBase Management System, sistema di gestione di un database) MySQL Utilizzeremo applicazioni portabili open source che non richiedono l’installazione e la configurazione e risultano molto semplici da utilizzare. L’esercitazione richiede l’utilizzo di macchine con sistema operativo Windows. Editor di codice PHP: NotePad++ Komodo Edit Aptana Studio: come Komodo ma più evoluto. 3
LA PIATTAFORMA EASYPHP EasyPHP è una piattaforma per lo sviluppo Web in PHP basata sul Web Server APACHE gestore dei DB mySQL, e il pannello di gestione dei DB phpAdmin. EasyPHP permette di usufruire in locale di un Web Server Apache e di un DataBase MySQL. INDIRIZZO IP LOCALE Il Web Server utilizzato è raggiungibile solo dalla macchina su cui è attivo easyPHP (Server Web Emulato). Poiché PhpMyAdmin è lo strumento di amministrazione fornito da quasi tutti i servizi di hosting ci sembra utile descriverne l’installazione e la configurazione anche in locale. L’indirizzo IP locale della macchina è 127.0.0.1 (o localhost). È possibile verificarlo aprendo una finestra del browser e digitando nella barra degli indirizzi http://127.0.0.1 oppure http://localhost. UTILIZZO DI EASYPHP PORTABLE 1. Fare doppio clic sul file “EasyPHP-DevServer-14.1VC9.exe” per attivare la piattaforma la cui icona sarà visibile nella tray-icon. NB la tray-icon è la barra, contenente una serie di icone associate ad alcune applicazioni in esecuzione, che compare in basso a destra vicino all’orologio. 2. Se easyPHP è stato precedentemente utilizzato o su un altro computer o è stato spostato in una differente directory, apparirà a video il seguente messaggio. Cliccare su “Si” per rigenerare i file di configurazione al fine di poter utilizzare correttamente la piattaforma. 4
3. Fare doppio clic sull’icona per visualizzare la seguente finestra di controllo dell’avvenuta attivazione del server Apache e del DB MySQL. I led verdi indicano che Apache e MySQL sono avviati correttamente. Da questo momento è possibile provare il proprio sito e le proprie pagine web in locale e gestire i database. 4. Cliccare destro su per visualizzare il seguente menu contestuale: Vediamo alcune voci di questo menu: • Explore (F8): serve per esplorare i progetti/applicazioni realizzati in php. • Administration (CTRL+A): serve per accedere al pannello di amministrazione di easyPHP. • Local Web F7: server per aprire i progetti/siti in locale. 5
PANNELLO DI AMMINISTRAZIONE DI EASYPHP phpMyAdmin è la piattaforma con interfaccia grafica composta da pagine Web open source per l’amministrazione dei DB creati con mySQL. Il suo nome deriva proprio dal linguaggio (PHP) con cui è stato scritto il suo codice. 6
Dal pannello di controllo è possibile accedere a differenti funzionalità di easyPHP. In particolare: • MODULES “MySQL Administration: PhpMyAdmin 4.1.4”: cliccare sulla voce open, per accedere al pannello di controllo phpMyAdmin per la gestione dei database ed per effettuare interrogazioni in linguaggio MySQL. • PORTABLE FILES / LOCAL WEB per accedere ai file in locale del proprio sito (F7). • CODE TESTER per scrivere del codice php per una fase di tester. DOVE SALVARE I FILE DI UN PROGETTO I file del sito dinamico devono essere salvati all’interno di una sottocartella creata in \data\localweb\ della piattaforma phpMyAdmin PHP. PANORAMICA SU PHPMYADMIN phpMyAdmin è un ambiente grafico per la gestione dei database MySQL, con phpMyAdmin si può visualizzare il contenuto del DB, creare, modificare e cancellare intere tabelle singoli record, fare il backup dei dati contenuti, visualizzare le informazioni d’interesse (con il linguaggio SQL). La piattaforma è raggiungibile direttamente da: http://127.0.0.1/modules/phpmyadmin/ La finestra principale di phpMyAdmin è costituita da due frame. In quello di sinistra, troviamo l’elenco di tutti i DB esistenti. Nel nostro caso sono due i DB: agenda e wordpress. Il primo è un esempio molto semplice di DB costituito da una sola tabella, mentre il secondo è il DB completo per gestire un sito dinamico in WordPress. 7
Sopra all’elenco dei DB esistenti possiamo vedere un menu costituito dalle seguenti voci: Nell’area centrale, invece, troviamo il pannello delle impostazioni generali e la descrizione delle caratteristiche dell’ambiente. Sopra, abbiamo la parte più interessante. Il menu orizzontale riporta tutte le voci per la gestione dei DB: Database, SQL, Stato, Utenti, Esporta, Importa, Impostazioni, Log binario, Replicazione e Più. Per la guida si veda: http://www.html.it/guide/guida-phpmyadmin/ 8
ESERCITAZIONE SULLA GESTIONE DI UN DB CON PHPMYADMIN Si vuole progettare un database relazionale utilizzando phpMyAdmin per la gestione dei voti degli alunni di una classe. Ogni alunno è identificato da: matricola, nome e, cognome. Ogni materia è identificata da: nome e, dipartimento. Ogni alunno può essere valutato in una o più materie. Di ogni valutazione interessa il voto e la data. Per semplicità si suppone di non lavorare sullo storico ma solo sull’anno scolastico in corso. Le fasi di sviluppo sono le seguenti: 1. Raccolta dati. 2. Schema E/R. 3. Schema Relazionale. 4. Implementazione dello schema in PHPMyAdmin. 5. Popolare il DB. 6. Testing. 7. Interrogazioni/Query. 8. Aggiornamenti e manutenzione. NB “Popolare un database” è l’attività di inserimento dei dati all’interno del database stesso. In un database relazionale questo corrisponde alla creazione delle righe (record) che compongono le tabelle che costituiscono il database. Normalmente la memorizzazione di una singola informazione corrisponde all’inserimento di una o più righe in una o più tabelle del database. RACCOLTA DATI La raccolta dati è la fase iniziale nella quale il progettista stende le specifiche del progetto raccogliendo informazioni dal cliente che ha richiesto la realizzazione della base dati. 9
SCHEMA E/R Lo schema concettuale E/R può essere realizzato con Java Diagrammi E/R, software open source. NomeMateria Dipartimento Ogni alunno deve (o può) essere valutato in una o più materie. In ogni materia l’alunno può avere una o più valutazioni. SCHEMA RELAZIONALE Lo schema logico Relazionale è costituito dalle seguente tre relazioni. La terza relazione traduce l’associazione N:N dello schema E/R. Alunni(Matricola, Cognome, Nome) Materie(NomeMateria, Dipartimento) Valutazioni(MatricolaAlunni, NomeMaterie, Voto, Data) Alternativa alla terza relazione (semplificazione): Valutazioni(IdValutazione, MatricolaAlunni, NomeMaterie, Voto, Data) NB Riguardare il concetto fondamentale di: “vincoli d’integrità referenziale” 10
1 N N 1 NomeMateria NomeMateria IdValutazione Dipartimento Matricola Matricola Cognome Nome Voto Data M100 Rossi Paolo 1 M100 ITA 7 18/11/14 ITA ITA M101 Bianchi Giulia 2 M102 INFO 8 20/11/14 INFO INFO M102 Verdi Carlo 3 M103 STO 5 22/11/14 STO ITA M103 Rossi Lidia 4 M102 STO 6 11/12/14 ENG ITA 5 M103 ENG 4 12/12/14 Matricola è Chiave Esterna (corrispondente alla chiave primaria Matricola della tabella Alunni) della tabella Valutazioni. NomeMateria è Chiave Esterna (corrispondente alla chiave primaria NomeMateria della tabella Materie) della tabella Valutazioni. NB Le foreign key sono supportate da mySQL solo per motori InnoDB APRIRE IL PANNELLO DI AMMINISTRAZIONE DEI DATABASE Per aprire il Pannello di Amministrazione php MyAdmin basta digitare nella barra degli indirizzi del software di navigazione (Chrome o Firefox, no Internet Explorer): http://127.0.0.1/modules/phpmyadmin NB Assicurarsi che la cartella phpymyadmin, contenuta nella directory EasyPHP-DevServer-14.1VC9\modules abbia effettivamente questo nome. 11
CREARE UN NUOVO DB Creare il DB “registro” in questo modo. 1. Dalla scheda “Database” inserire il nome del DB da creare nel campo “Crea nuovo database”, come riportato nella seguente figura. 2. Cliccare su “Crea” per creare il DB. Una volta che il database è stato creato e aperto, in alto si potrà notare la “Barra di Navigazione” che indica il percorso seguito per arrivare al DataBase “registro”: ELIMINARE UN DB Eliminare il DB “registro” appena creato in questo modo: 1. Tornare alla Home della piattaforma: 2. Dal menu orizzontale superiore cliccare su “Database”. 3. Dall’elenco dei DB, mettere un segno di spunta a fianco al DB da eliminare, e poi cliccare su Elimina. 12
4. Creare di nuovo il DB “registro” e selezionarlo dall’elenco dei DB. CREARE LA TABELLA ALUNNI Per creare una nuova tabella eseguire i seguenti passi: 1. Dall’elenco dei DB presente nella Home cliccare sul DB appena creato “registro”. 2. Nel frame centrare inserire il nome da associare alla nuova tabella, alunni, nella casella di testo “Nome”. Nel secondo campo di testo, “Numero dei campi”, inserire 3, per creare (almeno inizialmente) tre campi. 3. Cliccare su Esegui per confermare la creazione. 13
4. Impostare la struttura della tabella come segue: 5. Confermare su Salva. La struttura della tabella ha le seguenti caratteristiche: Matricola è l’identificativo univoco dell’alunno, è un dato di tipo VARCHAR, stringhe di carattere con lunghezza, espressa in caratteri, impostata con la voce Lunghezza. La voce Indice è impostata su PRIMARY per rendere questo campo chiave primaria (ciò assicura l’univocità delle singole voce di questo campo). Nome, Cognome sono tutti campi del tipo VARCHAR. Per vedere il risultato ottenuto cliccare, dall’elenco dei DB del frame di sinistra, sul nome del nuovo DB “registro”. L’area centrale visualizzerà tutte le tabelle del DB, nel nostro caso una sola. Cliccare sulla voce Struttura per analizzare le proprietà della tabella: 14
Facendo sempre riferimento al menu orizzontale che appare nell’area centrale quando si seleziona un DB, si può osservare un menu orizzontale superiore, “Barra dei Comandi”, che elenca tutte le funzionalità applicabili al DB selezionato, e un menu sottostante orizzontale che elenca invece le funzionalità utilizzabili su ogni singola tabella del DB (nel nostro caso una sola tabella): Le voci, “Pulsanti d’azione” di questo menu sono: Mostra: visualizza i dati contenuti nella tabella selezionata. Struttura: visualizza la struttura della tabella selezionata (come abbiamo già visto). Cerca: ricerca record della tabella selezionata che rispettino determinati criteri. Inserisci: permette l’inserimento di dati in un nuovo record della tabella selezionata. Svuota: cancella i dati inseriti nella tabella selezionata, senza eliminare la tabella stessa. Elimina: elimina la tabella selezionata. 15
TIPI DI DATI IN MYSQL MySQL dispone di varie tipologie di dati per gestire correttamente, numeri, stringhe e date. In questo modo ad ogni colonna di una tabella occorre associare un solo tipo d’informazione: tale colonna potrà accettare solo dati corrispondenti al tipo assegnatole. TIPI DI DATI NUMERICI DATA E ORA STRINGA SPAZIALI Tipi Numerici Interi Tipo Intervallo di valori TINYINT -128 > 127 SMALLINT -32768 > 32767 MEDIUMINT -8388608 > 8388608 INT -2147483648 > 2147483647 BIGINT -9223372036854775808 > 9223372036854775807 16
Tipi Numerici NON Interi Tipo FLOAT(I,D) DOUBLE(I,D) DECIMAL(I,D) Da precisare che FLOAT, DOUBLE e DECIMAL funzionano alla stessa maniera (varia unicamente la capacità, ovvero il range di valori ammessi). Come si vede dalla tabella questi tre tipi di dati prevedono un doppio valore tra parentesi: La I indica il numero di Interi ammessi La D il numero di Decimali. Se ad esempio si vuole salvare il numero 12.345678 ad una colonna di tipo FLOAT(2,4), tale numero diverrà 12.3456 (in quanto si accettano 2 interi ma solo 4 decimali). Per la rappresentazione dei dati decimali in phpMyAdmin, molto semplice, basta riportare nel campo Lunghezza/Valori: lunghezza della parte intera, numero di decimali Per esempio, si vuole rappresentare una colonna con dati di tipo float con parte intera lunga 10 e la parte decimale lunga 2: 10,2 Tipi di dati Stringa Tipo Dimensioni massime CHAR(n) 255 byte VARCHAR(n) 255 byte TINYTEXT 255 byte TINYBLOB 255 byte TEXT 65535 byte 17
BLOB 65535 byte MEDIUMTEXT 1.6 Mb MEDIUMBLOB 1.6 Mb LONGTEXT 4.2 Mb LONGBLOB 4.2 Mb I tipi CHAR e VARCHAR sono sicuramente i tipi più utilizzati. La differenza tra questi due tipi è data dal fatto che mentre VARCHAR ha lunghezza variabile, CHAR ha lunghezza fissa. Questo significa che in una colonna CHAR(10) tutti i valori memorizzati saranno lunghi 10 Byte anche se costituiti da 3 soli caratteri (cosa che assolutamente non accade con VARCHAR). I tipi TEXT e BLOB (Binary Large OBject) consentono di memorizzare grandi quantità di dati. Per esempio, la colonna “Cognome” della tabella Alunni: Alunni(Matricola, Cognome, Nome) è di tipo VARCHAR(30), che significa che la colonna ammette solo caratteri alfanumerici ed ha una lunghezza massima di 30 caratteri. CREARE LA TABELLA MATERIE 18
CREARE LA TABELLA VALUTAZIONI La voce A.I. è selezionata per rendere auto incrementale il valore della chiave primaria ogni volta che si aggiunge un record alla tabella. INSERIRE UN NUOVO RECORD NELLA TABELLA ALUNNI In questa fase occorre popolare le tre tabelle, rispettando un certo criterio di inserimento dei dati. Per esempio, non è possibile popolare la tabella Valutazioni se non sono state prima popolate le tabelle Alunni e Materie. NB L’ordine d’inserimento delle righe deve essere fatto in modo da rispettare i vincoli imposti sulle tabelle. Si può quindi iniziare a popolare la tabella Alunni in questo modo: 19
1. Dall’elenco dei DB cliccare sul nome della tabella “alunni”. 2. Dal menu orizzontale scegliere la voce Inserisci. 3. Compilare i campi Valore relativi a Matricola, Nome e, Cognome. 4. Cliccare su Esegui. 5. Verificare la query eseguita: INSERT INTO `registro`.`alunni` (`Matricola`, `Cognome`, `Nome`) VALUES ('M100', 'Rossi', 'Paolo'); 6. Inserire con la stessa procedura altri record nella tabella. MOSTRARE I RECORD E I VALORI DEI CAMPI DELLA TABELLA ALUNNI Dalla menu orizzontale scegliere la voce Mostra: 20
Osservare la query eseguita: SELECT * FROM `alunni`; AGGIORNARE UN RECORD DELLA TABELLA ALUNNI Dalla precedente finestra “Mostra” cliccare sulla voce “Modifica” in corrispondenza del record di cui si vogliono modificare i valori di uno o più campi. Effettuare le modifiche opportune e cliccare su Esegui. Verificare la query eseguita: UPDATE `registro`.`alunni` SET `Nome` = 'daniele' WHERE `registro`.`IdAlunno` = 'M102'; IMPORTARE DATI NELLA TABELLA ALUNNI DA FILE CSV È possibile automatizzare l’operazione di inserimento di uno o N record in una tabella. Il formato CSV (Comma-Separated Values) è un formato di file utilizzato per l'importazione ed esportazione di una tabella di dati in fogli elettronici o database. Si tratta di un semplice file di testo. In questo formato, ogni riga della tabella (o record della base dati) è rappresentata da una linea di 21
testo, che a sua volta è divisa in campi (le singole colonne) attraverso un apposito carattere separatore. Il formato CSV non specifica una codifica di caratteri, né la convenzione per indicare il fine linea, né il carattere da usare come separatore tra campi (normalmente è una virgola nel mondo anglosassone, punto e virgola in Italia a causa dell’uso della virgola nei numeri decimali) e nemmeno convenzioni per rappresentare date o numeri (tutti i valori sono considerati come semplici stringhe di testo). Questi dettagli possono dover essere specificati dall'utente tutte le volte che si importano o esportano dati in formato CSV in un programma come ad esempio un foglio elettronico. La procedura è la seguente: 1. Da Excel creare la tabella contenente i dati da importare nella tabella Alunni del DB registro: 2. Dalla scheda “File” selezionare la voce “Salva con nome”. 3. Dalla finestra che appare indicare il nome da attribuire al file nel capo “Nome file” (eventualmente cambiare il percorso di directory) e selezionare in “Salva come” il tipo CSV (delimitato dal separatore di elenco) (*sv). Quindi salvare con “Salva”: 22
4. Da PHPMyAdmin, selezionare il database “registro”. 5. Selezionare la tabella “alunni”. 6. Cliccare sulla voce “Importa” dal menu orizzontale: 7. Dalla scheda “Importa” visualizzata cliccare sul pulsante “Sfoglia” per selezionare il file CSV da importare. 8. Impostare il formato “CSV using LOAD DATA”. 23
9. Cliccare infine su Esegui. 10. Cliccare sulla voce “Mostra” del menu orizzontale superiore per vedere la tabella aggiornata con l’inclusione dei nuovi record: 24
APPROFONDIMENTO - AUTOMATIZZARE LA PROCEDURA DI IMPORTAZIONE La procedura per caricare dati da una sorgente CSV all’interno di un DB MySQL è molto semplice in quanto completamente automatizzata mediante un’apposita query basata sul comando LOAD DATA. Facciamo un esempio pratico e supponiamo di avere una sorgente dati CSV ed una tabella sul DB avente la medesima struttura. A questo punto potremmo caricare dati utilizzando una semplice query tramite phpMyAdmin o qualsiasi altro GUI per la gestione del DB: 1 LOAD DATA LOCAL INFILE 'miofile.csv' 2 INTO TABLE miatabella 3 FIELDS TERMINATED BY ',' 4 LINES TERMINATED BY '\\r\\n'; Si può eseguire questo comando anche tramite PHP: 25
1
CREARE LE ASSOCIAZIONI Per creare le associazioni occorre indicizzare le Chiavi esterne. Dalla “Struttura” della tabella “valutazioni” cliccare su “Indice” per i campi “Matricola” e “NomeMateria” (chiavi esterne) da indicizzare: Dalla finestra di poup che appare cliccare su OK. Dalla “Struttura” della tabella “valutazioni” cliccare sulla voce “Vedi relazioni” e applicare le seguenti associazioni: 27
ESECUZIONE QUERY PER TESTING ASSOCIAZIONI Provare ad eseguire la seguente query verificandone la funzionalità. SELECT * FROM alunni, materie, valutazioni WHERE alunni.Matricola=valutazioni.Matricola AND materie.NomeMateria=valutazioni.NomeMateria AND valutazioni.voto>5; Dalla scheda QUERY incollare il precedente codice e cliccare su “Esegui”. BACKUP DATABASE È possibile salvare il database in un file esterno con estensione SQL per motivi di sicurezza, al fine di poterlo ripristinare all’occorrenza. 1. Dall’elenco dei DB selezionare il DB che si vuole esportare e cliccare su “Esporta”: 2. Cliccare su “Esegui”: 28
3. Cliccare su “OK”: 4. Aprire il file salvato con Notepad++ (o altro editor di testo) e osservare il codice SQL. RIPRISTINO DATABASE Supponiamo di voler ripristinare il DB precedentemente salvato in un file esterno 1. Creare un nuovo DB di prova (registroprova). 2. Selezionare la scheda “Importa”. 3. Da “Sfoglia” cercare il file SQL precedentemente salvato. 4. Cliccare su “Esegui”. 29
BACKUP TABELLA ALUNNI La stessa procedura adottata per esportare il DataBase può essere applicata anche ad una singola tabella. Basterà quindi cliccare su “Esporta”, dalla tabella “Alunni”, e procedere come già precedentemente indicato. ESPORTAZIONE DATI TABELLA ALUNNI IN EXCEL - CSV La procedura è la seguente: Cliccare su “Esporta”, dalla tabella “Alunni”. Scegliere CSV … Cliccare su Esegui. 30
Salvare il file. 31
PROGETTO 1 32
ES QUERY Ricercare i farmaci prodotti dalla ditta di codice 57. 33
APPROFONDIMENTO - CREARE UNA TABELLA CON IL FILE .SQL -- phpMyAdmin SQL Dump -- version 4.1.4 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: Mag 14, 2014 alle 09:32 -- Versione del server: 5.6.15-log -- PHP Version: 5.4.24 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Database: `rubrica` -- -- -------------------------------------------------------- -- -- Struttura della tabella `utenti` -- CREATE TABLE IF NOT EXISTS `utenti` ( `IdUtente` int(11) NOT NULL COMMENT 'chiave primaria', `Nome` varchar(20) NOT NULL, `Cognome` varchar(20) NOT NULL, `Tel` varchar(15) NOT NULL, PRIMARY KEY (`IdUtente`) 34
) ENGINE=MyISAM DEFAULT CHARSET=latin1; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; APPROFONDIMENTO - IMPOSTARE UNA PASSWORD DI ROOT Se si vuole impostare o cambiare la password di root MySQL, occorre seguire i seguenti passaggi: 1. Aprire phpMyAdmin e selezionare Utenti dal menu: 2. Verificare il "root" utente il cui valore di Host è localhost e fare clic sull’icona "Modifica privilegi". 3. Nel campo "Cambia password", fare clic su "Password" ed inserire una nuova password. 35
Per confermare, digitare nuovamente la password. Quindi fare clic su "Esegui" per applicare le impostazioni. Individuare la stringa di assegnamento $cfg['Servers'][$i]['password'] = '' '' nel file config.inc.php contenuto nella cartella \modules\phpmyadmin e impostarla con la stessa password inserita in phpMyAdmin, come per esempio; $cfg['Servers'][$i]['password'] = ''admin'' 36
Puoi anche leggere