Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Exportar MYSQL A CSV pero sin descarga

Estas en el tema de Exportar MYSQL A CSV pero sin descarga en el foro de PHP en Foros del Web. Hola, Buscando todas las soluciones de exportar de mysql a csv con PHP me genera un archivo csv pero despues lo descarga. Yo lo que ...
  #1 (permalink)  
Antiguo 20/10/2014, 12:32
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años
Puntos: 10
Exportar MYSQL A CSV pero sin descarga

Hola,

Buscando todas las soluciones de exportar de mysql a csv con PHP me genera un archivo csv pero despues lo descarga.

Yo lo que necesito es que no lo descargue, si no que lo deje en una carpeta.

Como podria hacerlo, este es el codigo que utilizo.

GRacias!!!

Código PHP:
<?php

$host 
'localhost'// MYSQL database host adress
$db ''// MYSQL database name
$user ''// Mysql Datbase user
$pass ''// Mysql Datbase password
// Connect to the database
$link mysql_connect($host$user$pass);
mysql_select_db($db);





function 
exportMysqlToCsv($filename,$query)
{
$csv_terminated "\n";
$csv_separator ",";
$csv_enclosed '"';
$csv_escaped "\\";
$sql_query $query;
// Gets the data from the database
$result mysql_query($sql_query);
$fields_cnt mysql_num_fields($result);
$schema_insert '';
for (
$i 0$i $fields_cnt$i++)
{
$l $csv_enclosed str_replace($csv_enclosed$csv_escaped $csv_enclosed,
stripslashes(mysql_field_name($result$i))) . $csv_enclosed;
$schema_insert .= $l;
$schema_insert .= $csv_separator;
// end for
$out trim(substr($schema_insert0, -1));
$out .= $csv_terminated;
// Format the data
while ($row mysql_fetch_array($result))
{
$schema_insert '';
for (
$j 0$j $fields_cnt$j++)
{
if (
$row[$j] == '0' || $row[$j] != '')
{
if (
$csv_enclosed == '')
{
$schema_insert .= $row[$j];
} else
{
$schema_insert .= $csv_enclosed .
str_replace($csv_enclosed$csv_escaped $csv_enclosed$row[$j]) . $csv_enclosed;
}
} else
{
$schema_insert .= '';
}
if (
$j $fields_cnt 1)
{
$schema_insert .= $csv_separator;
}
// end for
$out .= $schema_insert;
$out .= $csv_terminated;
// end while
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " strlen($out));
// Output to browser with appropriate mime type, you choose
header("Content-type: text/x-csv");
//header("Content-type: text/csv");
//header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
echo 
$out;
exit;
}

$filename="productos.csv"// name of your file
$query="SELECT * from productos"// your query
exportMysqlToCsv($filename,$query);



?>
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #2 (permalink)  
Antiguo 21/10/2014, 01:35
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 10 años, 2 meses
Puntos: 14
Respuesta: Exportar MYSQL A CSV pero sin descarga

En el código te sobra la parte que indica que se descargue. Quita esto:

Código PHP:
Ver original
  1. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  2. header("Content-Length: " . strlen($out));
  3. // Output to browser with appropriate mime type, you choose
  4. header("Content-type: text/x-csv");
  5. //header("Content-type: text/csv");
  6. //header("Content-type: application/csv");
  7. header("Content-Disposition: attachment; filename=$filename");

Y para guardar el resultado en un fichero, puedes consultar cualquier tutorial de los muchos que hay por internet. Por ejemplo:

http://www.aprenderaprogramar.com/in...ero&Itemid=193

En resumen, de tu código quita todas las partes que fuerzan la descarga del archivo creado y, al final, usa las funciones de gestión de ficheros de PHP para guardarlo en un directorio.

Un saludo!
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #3 (permalink)  
Antiguo 21/10/2014, 05:47
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años
Puntos: 10
Respuesta: Exportar MYSQL A CSV pero sin descarga

Muchas gracias!! Me sirvio mucho!! Consegui lo que queria hacer, sacando esas ultimas lineas y agregando lo siguiente:

Código PHP:
Ver original
  1. $file = fopen("datos.csv", "w");
  2. fwrite($file, $out . PHP_EOL);
  3. fclose($file);
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #4 (permalink)  
Antiguo 21/10/2014, 07:19
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 10 años, 2 meses
Puntos: 14
Respuesta: Exportar MYSQL A CSV pero sin descarga

De nada! Me alegro que te haya servido
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.

Etiquetas: csv, mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:08.