Exportation de données de base de données au format CSV avec PHP
Dans le domaine de la gestion des données, il peut être nécessaire d'extraire des informations d'une base de données et de les exporter dans un format pratique. Si votre format préféré est CSV (valeurs séparées par des virgules), PHP fournit une solution robuste pour cette tâche.
Générer du contenu CSV
Pour créer du contenu CSV à partir d'un tableau , vous pouvez utiliser la fonction suivante :
function array2csv(array &$array) { if (count($array) == 0) { return null; } ob_start(); $df = fopen("php://output", 'w'); fputcsv($df, array_keys(reset($array))); foreach ($array as $row) { fputcsv($df, $row); } fclose($df); return ob_get_clean(); }
Cette fonction vérifie d'abord si le tableau est vide. Si ce n'est pas le cas, il commence à mettre la sortie en mémoire tampon, ouvre un handle vers le flux de sortie, écrit la ligne d'en-tête contenant les clés du premier élément du tableau, puis parcourt le tableau, en écrivant chaque ligne dans le flux de sortie à l'aide de fputcsv(). Enfin, il ferme le handle de sortie et renvoie le contenu CSV mis en mémoire tampon.
Lancement du téléchargement
Une fois que vous avez le contenu CSV, vous pouvez permettre à l'utilisateur de télécharger le fichier. en utilisant la fonction suivante :
function download_send_headers($filename) { // disable caching $now = gmdate("D, d M Y H:i:s"); header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); header("Last-Modified: {$now} GMT"); // force download header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); // disposition / encoding on response body header("Content-Disposition: attachment;filename={$filename}"); header("Content-Transfer-Encoding: binary"); }
Dans cette fonction, les mécanismes de mise en cache sont désactivés et le téléchargement du fichier est forcé en définissant les en-têtes appropriés. L'en-tête Content-Disposition spécifie le nom du fichier et définit la disposition en tant que pièce jointe, tandis que l'en-tête Content-Transfer-Encoding indique un transfert binaire.
Exemple d'utilisation
Pour afficher comment utiliser ces fonctions, considérons l'exemple suivant :
download_send_headers("data_export_" . date("Y-m-d") . ".csv"); echo array2csv($array); die();
Cet exemple définit les en-têtes de téléchargement avec le nom de fichier spécifié, génère le CSV contenu, puis termine l'exécution pour éviter toute sortie supplémentaire qui pourrait corrompre le fichier.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!