Commenti(0)
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;lt;TABLE BORDER="1"&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
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:
Argomenti chiave:

MySQL Report un tool di shell per tenere tutto sotto controllo