[Pillola] Caratteristiche aggiuntive di PhpMyAdmin.
Come utilizzare le caratteristiche aggiuntive in PhpMyAdmin.
[Premessa]
In PhpMyAdmin ci sono alcune caratteristiche tipo l'history delle queries,
il bookmark e la gestione delle relazioni tra tabelle (incluse MyISAM),
che devono essere espressamente implementate.
Le due prime sono di ordinaria amministrazione, mentre la gestione delle
relazioni e la produzione di un report grafico di un database sono semplici
si, ma non immediate come le prime due citate.
La gestione delle relazioni tra tabelle puo' diventare complessa aumentando
il numero dei record ed il numero di tabelle associate, specialmente nelle
tabelle MyISAM. PhpMyAdmin offre questo strumento che si rivela prezioso per
ricostruire una tabella danneggiata. In pratica semplicemente cliccando un
link si ottiene la query che verificherà la consistenza del campo relazionato.
Vediamo di che si tratta. Avrete visto tutti la scritta in PhpMyAdmin
che le caratteristiche aggiuntive sono state disattivate bla bla bla....
"clicca qui e ti dico il perché"? Bene andiamo a vedere:
[Preparazione]
Prima di tutto. Le prove le ho eseguite su mysql 4.1.9, php 4.3.10 e
phpMyAdmin 2.6.1 che fortemente raccomando e che necessita per fare questa
esperienza. Serve poi Acrobat reader (6) se volete vedere le pagine .pdf
prodotte. Non so se funziona anche su mysql 4.0.x ma credo di si poichè è
una prestazione di PhpMyAdmin e non di MySQL.
Servirà produrre un database nuovo di nome fantasioso: PhpMyAdmin e tanto
per stare in linea lasceremo i nomi delle tabelle come previsto dal default.
Per installare questo db, PhpmyAdmin ci viene incontro con uno script,
anzi più di uno, che troveremo nella cartella di /phpmyadmin-2.6.1/scripts/
Per Mysql 4.0.x e Mysql < 4.1.2 - il file: create_tables.sql
Per MySQL => 4.1.2 il file: create_tables_mysql_4_1_2+.sql
Per chi passera' da una versione all'altra di mySQL avrà disponibile il
file di upgrade: upgrade_tables_mysql_4_1_2+.sql
Il file si occupa di creare database e tabelle. Quindi importando il file
nella query ... PhpMyAdmin l'ha fatto e PhpMyAdmin lo esegue.
Noi dobbiamo avere invece una struttura di db con tabelle relazionate. Per fare
questo, a disposizione di chi non avesse tabelle disponibili ma volesse provare,
allego un file di dump di esempio. Copia e incolla salvandolo con il nome
che_volete.sql e fatelo eseguire pari pari al precedente file.
Questo file.sql creerà una struttura basica per le prove nel database “test”.
Verranno configurate le tabelle "clienti", "prodotti" e "vendite".
Andiamo alla configurazione
Le tabelle che serviranno a noi sono:
Iniziamo mettendo mano al file di configurazione conf.inc.php utilizzando ilcodice:pma_column_info pma_pdf_pages pma_relation pma_table_coords pma_table_info
proprio editor. Portiamoci nella sezione SERVER(s) Configuration.
Troviamo la prima delle righe che iniziano con:
$cfg['Servers'][$i]['host']
Di queste sezioni ne troviamo altre due. Queste sezioni servono per identificare
un host, user, password ed alcune peculiarità. Quindi con lo stesso phpMyAdmin
noi potremmo collegarci a server diversi settando opportunamente alcuni
parametri. Collegandoci allo stesso server potremmo definire tre diversi utenti
con le usuali procedure automatiche oppure con la richiesta di user / password.
Ma non e' questo lo scopo della pillola e quindi tiriamo dritti all'obiettivo.
Presumendo che il PC sia utilizzato da un solo utente procediamo alla confi-
gurazione del primo gruppo host/user. Dovremmo fare una cosa del genere.
Per quanto riguarda pma_history e pma_bookmark esulano dal nostro obiettivo,codice:$i++; $cfg['Servers'][$i]['host'] = '127.0.0.1'; $cfg['Servers'][$i]['port'] = ''; $cfg['Servers'][$i]['socket'] = ''; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['extension'] = 'mysql'; $cfg['Servers'][$i]['compress'] = FALSE; $cfg['Servers'][$i]['controluser'] = ''; $cfg['Servers'][$i]['controlpass'] = ''; $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'user'; $cfg['Servers'][$i]['password'] = 'password'; $cfg['Servers'][$i]['only_db'] = ''; $cfg['Servers'][$i]['verbose'] = ''; $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['history'] = 'pma_history'; $cfg['Servers'][$i]['verbose_check'] = TRUE; $cfg['Servers'][$i]['AllowRoot'] = TRUE; $cfg['Servers'][$i]['AllowDeny']['order'] = ''; $cfg['Servers'][$i]['AllowDeny']['rules'] = array();
e sono di semplice utilizzo. Ma se vi pare inseriteli, le tabelle ci sono.
Quindi, ad ora abbiamo configurato il database phpmyadmin, abbiamo configurato
tre tabelle di prova, abbiamo modificato il file conf.inc.php e quindi possiamo
cominciare a provare.
Cominciamo a provare
Selezioniamo il database “test” e quindi prendiamo la tabella di unione dei
dati tra “clienti” e “prodotti” e cioè la tabella "vendite". Perché la tabella
"vendite"? Perché è la tabella che non potrebbe vivere senza le altre due
(parlando di questa struttura) in altre parole, mentre “clienti” e “prodotti”
vivono con dati autonomi, "vendite" necessita invece di entrambe le tabelle
oppure sarebbe inconsistente. Immaginiamo clienti senza prodotti o viceversa.
Che ci starebbe a fare quel record?
Accertiamoci quindi di avere selezionato l'opzione “struttura” e verifichiamo
la presenza al fondo delle colonne della scritta Vedi relazioni.
Clicchiamoci su e comparirà una videata con tre colonne:
Collegamenti interni -- Scegli il campo da mostrare --- Commenti.
Liquidiamo subito “Commenti” che si spiega da se. I dati verranno memorizzati
nella tabella 'pma_column_info' e verranno riportati sotto il nome della
colonna relativa. Al passaggio del mouse sui nomi della struttura verrà
visualizzato lo scritto impostato. Attenzione a ricordarsi di memorizzare colonna
per colonna con <esegui> al fondo della stessa. Ogni colonna lavora per conto suo.
Mettete qualcosa nei campi tanto per vederne l'effetto e salvatelo.
La select centrale serve ad immettere nel menù di sinistra altre colonne della
tabella stessa aggiungendo il campo nella lista delle chiavi primarie disponibili
nel db. La salto a piè pari perché non ne ho riscontrato utilità alcuna.
La tabella corrispondente è 'pma_table_info'.
La prima colonna e' la più interessante. Dobbiamo scegliere dal menù a tendina
la corrispondente voce del link da immettere. Aprendo il menù vedremo la lista
delle tabelle.campo_primario (quelli autoincrement) di tutte quelle presenti nel
database.
Bene, essendo noi svegli, al campo “id_cliente” andremo ad associare il valore
“clienti->id_cliente” ed a “id_prodotto” il valore 'prodotti->id_prodotto'.
Poiché siamo svegli più che mai salviamo premendo <esegui>.
Ora cliccare su “mostra”. Potremo subito notare che sotto il nome del campo viene
mostrata la scritta memo impostata in precedenza. Poi vedremo che i valori lincati
ad altra tabella sono in blu. Cliccando su questo valore andremo a selezionare
direttamente il record della tabella corrispondente. Che bello. Torniamo sulla
struttura di "vendite" ed ora potremo vedere che i campi con un commento associato
avranno una sottolineatura tratteggiata. Passandoci su con il mouse potremo leggere il
contenuto del commento.
Passiamo al menù “Operazioni” e sotto "amministrazione della tabella" (siamo
sulla tabella vendite) vedremo una voce aggiuntiva: Controlla l'integrità delle
referenze. Cosa che faremo immediatamente ed il riscontro di zero righe estratte
ci renderà lieti. Provando a rimuovere un record referenziato da “id_clienti” o da
“id_prodotti” verranno mostrate le righe orfane, cioè inconsistenti.
Attenzione: non vengono effettuati controlli referenziali reali su delete.
Ottima palestra di esercitazione per gli amanti delle queries JOIN. Verifichiamo la
sintassi adottata per una query che cerca delle righe mancanti in una tabella referenziata:
Torniamo ora sul database, abbandoniamo la singola tabella e clicchiamo su “operazioni”.codice:SELECT `vendite` .* FROM `vendite` LEFT JOIN `clienti` ON `vendite`.`id_cliente` = `clienti`.`id_cliente` WHERE `clienti`.`id_cliente` IS NULL AND `vendite`.`id_cliente` IS NOT NULL
Scendendo in fondo al menù, troviamo una nuova voce: PDF – modifica pagine pdf. Clik.
Si apre una nuova pagina con:
Crea una nuova Page (Impaginazione automatica) esegui.
Diamo un nome d'affetto alla pagina, spuntiamo l'impaginazione automatica ed eseguiamo.
Scriveremo il nome del database ed il nome scelto nella tabella 'pma_pdf_pages'.
La pagina si amplia. Viene riempito automaticamente il form della tabella 'pma_table_coords'
che mostrerà accanto al nome della tabella la coordinata di stampa sul foglio.
Poiché svegli si, ma un po' fagiani anche e non sappiamo che pesci pigliare, accettiamo
il default proposto e premiamo l'ultimo <esegui> in basso.
Viene richiamato il lettore Adobe Reader 6 (raccomandato) che legge il file .pdf testé
formato. Ci sarà un indice, la descrizione delle tabelle, e la visualizzazione grafica
della tabelle e loro relazioni. Essendo il lettore Adobe Reader in grado di salvare il
file, se siete soddisfatti del risultato salvate il file e buonanotte suonatori.
Ma siccome siamo anche un po' fagiani, vogliamo vedere che è successo. Tornate indietro
quanto basta e rivedete la procedura. Arrivando alla pagina di presentazione del form,
premiamo ora la scritta: “ (dis)attiva scratchboard “ e vedremo le nostre tre
tabelline ammucchiate in una videata grafica. Purtroppo le proporzioni non sono reali
e spostamenti delle tabella con il mouse vi faranno rincretinire. Potrete pero' capire
la mimica e vedere che spostando le tabelle con il mouse il campo delle coordinate (sotto)
si aggiorna.
Guardiamo lo schema del pdf (in basso). Spuntiamo solo mostra la griglia e il colore.
Vedremo ora che in sottofondo alle tabelle ci sarà un reticolo. Stampiamo la pagina, poi
potremo facilmente posizionare secondo ascisse / ordinata preferita le tabelle, ricavandone
i valori da inserire direttamente nel form, ricordandosi di salvare la variazione.
La stampa viene gestita da Adobe Reader e quindi dovrete agire su di lui per dimensionare
in modo ottimale la stampa. Salvate la/le pagine su file.
Si può' giocare a piacimento. Tutto avviene all'insaputa delle tabelle controllate.
E se sieti presi dalla disperazione, non sapete più come pastrognarvi fuori dalle palle ,
andate nel db phpmyadmin e fate un truncate table a tutti e ricominciate da capo
(ma non alle vostre tabelle ovviamente^3).
Se volete smettere di usare il tool e decidete di eliminare il database phpmyadmin,
ricordatevi di togliere i riferimenti inseriti in conf.inc.php per evitare eventuali
messaggi di errore.
Nel caso facciate un aggiornamento di phpMyAdmin, sappiate che a partire dalla versione 2
il file di configurazione è compatibile, quindi è possibile salvarlo e trasferirlo
nella nuova versione che si installerà.
Leggete la guida di phpmyadmin. E' "quasi" tutto scritto.
Ciao...
Un'immagine...