Foros del Web » Programando para Internet » PHP »

Descargar consulta a fichero.

Estas en el tema de Descargar consulta a fichero. en el foro de PHP en Foros del Web. Hola a todos, quisera saber cómo puedo descargar una consulta a fichero txt en lugar de mostrarla en pantalla. La idea es sencilla, el visitante ...
  #1 (permalink)  
Antiguo 22/04/2002, 06:19
 
Fecha de Ingreso: abril-2002
Mensajes: 2
Antigüedad: 22 años
Puntos: 0
Descargar consulta a fichero.

Hola a todos, quisera saber cómo puedo descargar una consulta a fichero txt en lugar de mostrarla en pantalla.

La idea es sencilla, el visitante pulsa una opción para ver una serie de registros y en lugar de mostrar en pantalla la consulta, que se genere un fichero .txt que pueda descargar en su ordenador.

Si alguie sabe cómo hacerlo, le agracecería una pequeña ayuda.

He visto algo parecido en PHPNUKE para realizar copias de seguridad de las bases de datos.

  #2 (permalink)  
Antiguo 22/04/2002, 07:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Descargar consulta a fichero.

Tambien puedes ver lo que buscas en funcionamiento en phpmyadmin ...

Se trata basicamente de eviar las cabeceras HTML al navegador indicando que el contenido que va a enviarse es:

Código:
// loic1: 'application/octet-stream' is the registered IANA type but
//        MSIE and Opera seems to prefer 'application/octetstream'
$mime_type = (USR_BROWSER_AGENT == 'IE' || USR_BROWSER_AGENT == 'OPERA')
                   ? 'application/octetstream'
                   : 'application/octet-stream';

# Se envian las cabeceras indicando el tipo de fichero que se envia y la extension.
header('Content-Type: ' . $mime_type);
// lem9: we need "inline" instead of "attachment" for IE 5.5
$content_disp = (USR_BROWSER_AGENT == 'IE') ? 'inline' : 'attachment';
header('Content-Disposition:  ' . $content_disp . '; filename="' . $filename . '.' . $ext . '"');
header('Pragma: no-cache');
header('Expires: 0');
Donde:
$filename es el nombre del fichero que quires generar.
$ext es la extension del fichero que quieres generar ... si usas TXT, el navegador mostrara el resultado de tu consulta por pantalla y tu usuario tendra que grabar manualmente esos datos ... mejor usa cualquier otro tipo de extension ... algo asi como lo tipico SQL .. Luego, solo tendran que editarlo con cualquier editro de texto.

A continuacion de enviar las cabeceras HTML tienes que generar tu consulta, en este caso ya que lo vas a enviar a un fichero, tienes que usar como salto de linea /n (para windows, Unix) o /r (para Mac) o si gustas .. los dos /n/r y enviar toda la consulta al fichero con un simple echo (eso si, concatenado en un solo echo)

ejemplo:
Código:
$datos = "Esto es una prueba/n";
$datos. = "Esto es otra linea abajo de la anterior/n";
echo $datos;
Un saludo,

pd: Porciones de codigo extraidos de phpmyadmin.
  #3 (permalink)  
Antiguo 22/04/2002, 14:08
 
Fecha de Ingreso: abril-2002
Mensajes: 2
Antigüedad: 22 años
Puntos: 0
Re: Descargar consulta a fichero.

Gracias Cluster, con tu sugerencia y viendo un poco el código de phpmyadmin y phpnuke, tengo lo básico para empezar, dejo una muestra, a partir de aquí lo que falta es crear las consultas.
Cita:
<?php

$strfichero = "Catálogo PcLandia";
$strhecho = "Generado el";
$stra = "a las";
$fecha_hora = date ("d-m-Y");

header("Content-disposition: filename=$strfichero $dbname $fecha_hora.txt");
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");

// doing some DOS-CRLF magic...
$client = getenv("HTTP_USER_AGENT");
if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
{
$os = $regs[1];
// Mejor bajo Winx
if (eregi("Win",$os))
$crlf="\r\n";
}

$strhora = date ("H:i");
print "# ================================================== ======$crlf";
print "#$crlf";
print "# $strfichero $crlf";
print "# $strhecho $fecha_hora $stra $strhora $crlf";
print "#$crlf";
print "# http://www.pclandia.com/tienda$crlf";
print "# ================================================== ======$crlf";
print "$crlf";

?>
Saludos y gracias.
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:36.