Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [Pillola] Caratteristiche aggiuntive di PhpMyAdmin.

    [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:
    codice:
    pma_column_info
    pma_pdf_pages
    pma_relation
    pma_table_coords
    pma_table_info
    Iniziamo mettendo mano al file di configurazione conf.inc.php utilizzando il
    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.
    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();
    Per quanto riguarda pma_history e pma_bookmark esulano dal nostro obiettivo,
    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:
    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
    Torniamo ora sul database, abbandoniamo la singola tabella e clicchiamo su “operazioni”.

    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...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  2. #2
    allegato il dump citato in precedenza:

    codice:
    -- phpMyAdmin SQL Dump
    -- version 2.6.1
    -- http://www.phpmyadmin.net
    -- 
    -- Host: localhost
    -- Generato il: 18 Feb, 2005 at 04:35 PM
    -- Versione MySQL: 4.1.9
    -- Versione PHP: 4.3.10
    -- 
    -- Esempio per pillola
    -- 
    -- Database: `test`    compatibile con mysql 4.0 / 4.1
    ---------------------------------------------------------
    use `test`; 
    -- --------------------------------------------------------
    -- 
    -- Struttura della tabella `clienti`
    -- 
    CREATE TABLE `clienti` (
      `id_cliente` int(6) unsigned NOT NULL auto_increment,
      `nome` varchar(30) NOT NULL default '',
      `indirizzo` varchar(50) NOT NULL default '',
      `citta` varchar(50) NOT NULL default '',
      PRIMARY KEY  (`id_cliente`)
    ) TYPE=MyISAM COMMENT='Tabella clienti' AUTO_INCREMENT=3 ;
    
    INSERT INTO `clienti` VALUES (1, 'Fagian & Quaglie', 'Via Volatili, 16', 'Prateria');
    INSERT INTO `clienti` VALUES (2, 'Pulaster & Similia', 'Via Pollaio, 22', 'Cortile');
    
    -- 
    -- Struttura della tabella `prodotti`
    -- 
    CREATE TABLE `prodotti` (
      `id_prodotto` int(6) unsigned NOT NULL auto_increment,
      `descrizione` varchar(255) NOT NULL default '',
      `prezzo` float(8,2) unsigned NOT NULL default '0.00',
      `quantita` smallint(4) unsigned NOT NULL default '0',
      PRIMARY KEY  (`id_prodotto`)
    ) TYPE=MyISAM COMMENT='tabella prodotti' AUTO_INCREMENT=5 ;
    
    INSERT INTO `prodotti` VALUES (1, 'Mais sgranato', 12.35, 68);
    INSERT INTO `prodotti` VALUES (2, 'Granaglia spezzata', 7.50, 3);
    INSERT INTO `prodotti` VALUES (3, 'Mangime surgelato', 7.50, 180);
    
    -- --------------------------------------------------------
    
    -- Struttura della tabella `vendite`
    -- 
    
    CREATE TABLE `vendite` (
      `id_vendita` int(6) unsigned NOT NULL auto_increment,
      `id_cliente` int(6) unsigned NOT NULL default '0',
      `id_prodotto` int(6) unsigned NOT NULL default '0',
      `quantita` smallint(4) unsigned NOT NULL default '0',
      `data_ordine` datetime NOT NULL default '0000-00-00 00:00:00',
      `data_consegna` date NOT NULL default '0000-00-00',
      PRIMARY KEY  (`id_vendita`)
    ) TYPE=MyISAM COMMENT='Tabella vendite' AUTO_INCREMENT=5 ;
    
    INSERT INTO `vendite` VALUES (1, 1, 2, 2, '2005-02-18 00:00:00', '2005-02-28');
    INSERT INTO `vendite` VALUES (2, 2, 3, 3, '2005-02-18 12:30:00', '2005-02-26');
    INSERT INTO `vendite` VALUES (3, 2, 1, 0, '2005-02-18 11:32:30', '2005-02-24');
    INSERT INTO `vendite` VALUES (4, 1, 2, 0, '2005-02-18 11:32:30', '2005-02-26');

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    è un pillolone! questo..

    Molto interessate, al momento opportuno ci devo tornare su sta cosa! (stampata)

    ciao piero.
    Interactive Html/CSS/JS Playground | @webbeloz ( cip..cip! )
    Mechanics & Expert Tuning Fix Z3 Roadster Community

  4. #4
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    alla faccia, qua tocca leggere

    complimenti piero
    Errare humanum est, perseverare ovest

  5. #5
    Aggiunta al thread in rilievo
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  6. #6

  7. #7
    Grazie per l'attenzione....
    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'.
    In realta' non ero riuscito a verificarne il funzionamento. Ma poiche' non credo ci sia qualcosa di inutile della portata di una tabella, ho provato e riprovato fino a che non ho scoperto che succede. Il campo selezionato (uno per tabella) viene visualizzato nel file .pdf con un colore diverso, evidenziando cosi' "quel" campo selezionato. Non lo riscontravo perche' fagianamente mettevo il campo id_autoincrement che e' gia' diversamente colorato di suo.

    Potrebbe essere utile per evidenziare un campo in uno schema descrittivo. Nell'allegato il campo sarebbe l'ultimo in colore diverso di tutte e tre le tabelle.

    Producendo la documentazione di un progetto di database potrebbe servire ad evidenziare graficamente il campo di cui si sta trattando al momento.

    Ma il discorso phpmyadmin non e' ancora chiuso. Nel file di configurazione c'e una miniera di opzioni, non tutte comprensibili o documentate, che lasciano intravedere i limiti del prodotto ben oltre ai soliti che siamo abituati a considerare. Vedremo...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    buono a sapersi...
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  9. #9
    ...anzi no mi correggo!! Assolutamente da conoscere!!!
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    complimenti davvero, non immaginavo neanche che phpmyadmin potesse essere implementato in questo modo.

    Complimentoni

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.