Tengo datos en una base de datos MySQL. Estoy enviando al usuario una URL para que saque sus datos como un archivo CSV.
Tengo cubierto el correo electrónico del enlace, la consulta MySQL, etc.
¿Cómo puedo, cuando hacen clic en el enlace, tener una ventana emergente para descargar un CVS con el registro de MySQL?
Ya tengo toda la información para obtener el registro. Simplemente no veo cómo hacer que PHP cree el archivo CSV y les permita descargar un archivo con una extensión .csv.
php
csv
download
http-headers
d -_- b
fuente
fuente
php: // salida
fputcsv
fuente
outputCSV
función es innecesariamente complicada. Puede simplementeforeach
terminar$array
, enviando sus valores directamentefputcsv
. No hay necesidad de eso__outputCSV
y elarray_walk
:)foreach($data as $vals) {fputcsv($filehandler,$vals);}
"Prévalence","age 1","city 1"
Alguna idea? Jugar con UTF-8 no ha ayudado hasta ahora.Aquí hay una versión mejorada de la función de php.net que @Andrew publicó.
Es realmente fácil de usar y funciona muy bien con los conjuntos de resultados MySQL (i) / PDO.
Recuerde
exit()
después de llamar a esto si ha terminado con la página.fuente
fputcsv($outstream, array_keys($results[0]));
justo antes deforeach
que también incluya encabezados de columna.Además de todo lo que ya se dijo, es posible que deba agregar:
Es muy útil cuando se manejan archivos con varios idiomas, como los nombres de las personas o las ciudades.
fuente
El hilo es un poco viejo, lo sé, pero para referencia futura y para novatos como yo:
Todos los demás aquí explican cómo crear el CSV, pero pierden una parte básica de la pregunta: cómo vincular. Para vincular la descarga del archivo CSV, solo tiene que vincular al archivo .php, que a su vez responde como un archivo .csv. Los encabezados PHP hacen eso. Esto permite cosas interesantes, como agregar variables a la cadena de consulta y personalizar la salida:
my_csv_creator.php puede trabajar con las variables dadas en la cadena de consulta y, por ejemplo, utilizar consultas de bases de datos diferentes o personalizadas, cambiar las columnas del CSV, personalizar el nombre del archivo, etc., por ejemplo:
fuente
Cree su archivo y luego devuelva una referencia con el encabezado correcto para activar Guardar como: edite lo siguiente según sea necesario. Ponga sus datos CSV en $ csvdata.
fuente
Aquí hay un ejemplo de trabajo completo que usa PDO e incluye encabezados de columna:
fuente
Primero haga los datos como una Cadena con coma como delimitador (separados con ","). Algo como esto
fuente
Hola, funciona muy bien ... !!!! Gracias Peter Mortensen y Connor Burton
?>
fuente
Método simple
Por lo tanto, cada línea de la
$data
matriz irá a una nueva línea de su archivo CSV recién creado. Solo funciona solo para PHP 5 y versiones posteriores.fuente
Simplemente puede escribir sus datos en CSV utilizando la función fputcsv . Echemos un vistazo al siguiente ejemplo. Escribir la matriz de la lista en el archivo CSV
fuente
La forma más fácil es usar una clase CSV dedicada como esta:
fuente
En vez de:
Utilizar:
fuente
Ya llegó una muy buena solución. Solo estoy poniendo el código total para que un novato obtenga ayuda total
He guardado este código en csv-download.php
Ahora vea cómo he usado estos datos para descargar el archivo csv
Entonces, cuando hago clic en el enlace, descargo el archivo sin llevarme a la página csv-download.php del navegador.
fuente
Para que lo envíe como un CSV y que le dé el nombre del archivo, use header ():
http://us2.php.net/header
En cuanto a hacer el CSV en sí, simplemente recorrerá el conjunto de resultados, formateará la salida y la enviará, como lo haría con cualquier otro contenido.
fuente
Escribir su propio código CSV es probablemente una pérdida de tiempo, solo use un paquete como league / csv: trata todas las cosas difíciles para usted, la documentación es buena y es muy estable / confiable:
http://csv.thephpleague.com/
Tendrás que estar usando compositor. Si no sabe qué compositor es, le recomiendo que eche un vistazo: https://getcomposer.org/
fuente
fuente
¿Cómo escribir en un archivo CSV usando un script PHP? En realidad también estaba buscando eso también. Es una tarea fácil con PHP. fputs (controlador, contenido): esta función funciona de manera eficiente para mí. Primero debe abrir el archivo en el que necesita escribir contenido usando fopen ($ CSVFileName, 'wb').
fuente
Ponga en la
$output
variable los datos CSV y haga eco con los encabezados correctosfuente