A veces tenemos que generar listados de datos almacenados en un servidor sql en un formato que sea importable a algún software del tipo Excel o similares.
A partir de PHP 5.1 disponemos de la función putcsv, que nos falicita esta tarea, pero ¿qué pasa si nuestro servidor corre con un PHP 4 o 5.0?
Esto me ha ocurrido hace unos minutos, he tenido que dar un par de vueltas para generar dicho archivo y que sea descargable y no se imprima directamente en el navegador.
La solución es sencilla
header("Cache-Control: public");
header('Content-Type: text/csv; charset=utf-8');
// definimos el tipo MIME y la codificación
header('Content-Disposition: attachment; filename=Usuarios.csv');
// Forzamos que el archivo se descargue con un nombre definido
mysql_connect("localhost","*****","****");
//conectamos con la base datos
mysql_select_db("*****"); // etc,etc
$query="SELECT email,name,surnames,id FROM usuarios order by surnames";
$q=mysql_query($query) or die("Error de consulta");
//consultamos la BBDD
echo "email;nombre;apellidos;clave\n";
//primera fila del CSV
while($r=mysql_fetch_array($q)){
echo $r['email'].";".$r['name'].";".$r['surnames'].";".$r['key']."\n";
//imprimimos la línea de datos separada por ";" o lo que se tercie
}
Tan simple como eso, acordaros de saltar las línea con \n , o el archivo aparecerá en una sola línea
Tags: chorritrucos, mysql, php
Posted by Cesar - 12/05/11 - 0 comments





