disign | PHP: esportare in formato CSV una tabella di MySql | a digital sign for a best design!
A digital sign for a best design

Articolo stampato da http://disign.improntedigitali.it/php-esportare-in-formato-csv-una-tabella-di-mysql-463-2-1.html

© Luca Frassineti

Programmazione 7.617 visualizzazioni

PHP: esportare in formato CSV una tabella di MySql

17/04/2013

Oltre al classico back up del database, che restituisce il formato SQL di struttura e dati, script illustrato qui, può esser necessaria una esportazione della tabella di MySql in un formato utile all'analisi e all'elaborazione dei dati con i classici fogli elettronici quali ad esempio Excel.

Realizzare uno script del genere non è difficile, ecco un esempio di codice con cui esporto un CSV che avrà cone nome file quello della tabella con data dell'operazione. Da notare come nel ciclo della funzione vi sia una riga di esempio su come fare per impostare le intestazioni di colonna in modo che sia sostituito il nome del campo della tabella con una etichetta più comprensibile (nell'esempio la colonna che nel db è chiamata 'mail' nel csv risulterà essere 'posta elettronica'). Sarà quindi necessario aggiungere tutti i casi in cui si vuol modificare l'intestazione di colonna.

Ecco il codice:

 

$host = 'localhost';
$user = 'nomeutentedb';
$pass = 'passwordutentedb';
$db = 'nomedb';
 
$link = mysql_connect($host, $user, $pass) or die("Connessione MySql non riuscita " . mysql_error());
mysql_select_db($db) or die("Apertura DB fallita");
 
$q = "SELECT nomecampo1, nomecampo2, nomecampo3, nomecampo4 from nometabella order by id DESC ";

$result = mysql_query($q, $link) or die(mysql_error($conn));

header("Content-Type: text/csv");
header("Content-Disposition: attachment;filename=nometabella_" . date("d-m-Y") . ".csv");

$row = mysql_fetch_assoc($result);
if ($row) {
    echocsv(array_keys($row));
}

while ($row) {
    echocsv($row);
    $row = mysql_fetch_assoc($result);
}

function echocsv($fields)
{
    $separator = '';
    foreach ($fields as $field) {
        $field = strip_tags($field);
        if ($field == 'mail') $field = 'posta elettronica';

        $field = html_entity_decode($field, ENT_QUOTES, 'ISO-8859-1');
                if (preg_match('/\\r|\\n|,|"/', $field)) {
                    $field = '"' . str_replace('"', '""', $field) . '"';
                }
            echo $separator . $field;
            $separator = ';';
    }
    echo "\r\n";
}

csv

Invia una domanda o un commento sull'articolo

I campi obbligatori sono segnalati *

*

*



 


Questo sito è totalmente privo di pubblicità, se volete sostenere questa inziativa, potete scegliere di fare una piccola donazione libera:


© 2009 - 2024 Impronte digitali di Luca Frassineti. Tutti i diritti riservati.