Home
  • Recipes
  • Generare tabelle HTML con il client mysql
Sante Caserio
pubblicato più di 2 anni fa

Generare tabelle HTML con il client mysql

E' possibile fare in modo che MySQL restituisca come output ad una query direttamente codice HTML

Il client mysql ha un parametro—html che serve a ottenere l’output delle query in formato HTML. Questa opzione non è utile se usata direttamente da riga di comando (dato che renderebbe i risultati illeggibili), ma può essere usata ad esempio da PHP per ottenere un insieme di risultati già formattato, pronto per essere inviato al browser. Poiché PHP è il linguaggio più utilizzato nel web ed è software libero, verrà usato in questo articolo. Ad ogni modo tradurre lo script seguente in altri linguaggi, come Perl o Ruby, è piuttosto semplice.

La chiamata a mysql

Vediamo quali parametri occorre utilizzare:

  • —user – il nome utente;
  • —password – la password;
  • —html – questo parametro è già stato spiegato;
  • —execute – la query da eseguire; è importante che termini con “\g” (go); può anche contenere più comandi SQL, purché ognuno termini con un punto e virgola.

Il codice

Per prima cosa andiamo a preparare le variabili che useremo per la chiamata al client mysql. Per questioni di manutenibilità / portabilità del codice, ne useremo tre:

  • $mysql_path – il path e il nome del client; su GNU/Linux potrebbe essere ‘usr/local/mysql/bin/mysql’, mentre su Windows potrebbe essere ‘C:\Programmi\MySQL\bin\mysql.exe’;
  • $sql – la query da eseguire, racchiusa tra apici doppi; nel nostro esempio sarà “SHOW DATABASES;\g”;
  • $command – il comando completo, comprendente le due variabili già citate.

Per la chiamata useremo la funzione shell_exec(), che esegue il comando passato come parametro nella shell e restituisce il risultato. Poiché nel nostro caso si tratta di un’interrogazione il risultato verrà poi mostrato (echo $resultset); vi sono poi altre funzioni, come system(), che mostrano direttamente l’intero output del comando ma non lo restituiscono. Nel caso si tratti di un comando che non restituisce risultati, si userà passthru() e il parametro—html diventa inutile.

Ecco il nostro esempio:

 1// posizione e nome del client
 2$mysql_path = '/usr/local/mysql/bin/mysql';
 3// stringa sql da eseguire
 4$sql = "SHOW DATABASES;\g";
 5// comando completo
 6$command = "$mysql_path --user=zapata --password=libertad --html --execute=\"$sql\"";
 7// eseguo il comando
 8$resultset = shell_exec($command);
 9// mostro il risultato
10echo $resultset;

La presentazione

La tabella HTML generata da mysql è molto grezza. Il tag <TABLE> ha la forma seguente:

1&amp;amp;lt;TABLE BORDER="1"&amp;amp;gt;

Ciò rende la tabella piuttosto brutta, sebbene l’estetica possa essere modificata radicalmente grazie ai CSS.

Ciò che è positivo invece è l’uso del tag per l’intestazione dei campi, che si differenzia dal usato per la presentazione dei dati.

Non è possibile influenzare il modo in cui i tag HTML vengono usati. Non è quindi possibile ottenere un output completamente aderente agli standard del W3c, in quanto l’attributo BORDER non dovrebbe essere usato. Si può però rendere gradevole la tabella dei risultati tramite i CSS.

Non è questa la sede per entrare nei dettagli relativi a ciò che si può fare con i fogli di stile e in che modo. Tuttavia un esempio decente e molto semplice potrebbe essere il seguente:

 1<style media="all" type="text/css">
 2<!--
 3    table {
 4        border-width:1px;
 5        border-collapse:collapse;
 6        border-spacing:0px;
 7    }
 8    th {
 9        border-width:1px;
10        font-family:Verdana, Gadget, sans-serif;
11        font-size:14px;
12    }
13    td, tr {
14        border-width:1px;
15        font-family:Arial, Helvetica, sans-serif;
16        font-size:12px;
17    }
18-->
19</style>

Condividi su:

Esprimi un voto:

  • Current rating: 0.0/5
  • 1
  • 2
  • 3
  • 4
  • 5

Argomenti chiave:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic