Buenas noches,
os escribo por si me podeis echar una mano (continuo con el tema de los reports, y por ahora van dando su fruto jeje).
Estoy ahora liado con que un report sea exportable, pero no se exactamente como deberia hacerlo en codigo. Os relato la escena:
"Estoy en cierta pagina, y al llegar a cierta linea de codigo, quiero generar un .TXT y forzar la descarga. Este .TXT no tengo ningun interes en guardarlo en el servidor (vamos, que seria un print)"
¿Como deberia hacer eso?
Gracias.
PD: Aunque de esto tengo poca idea porque estoy aprendiendo sobre la marcha, os pego el codigo de lo que intento:
function descargar_csv($set_de_resultados){
$filename = 'logs_'.userdate(time(),get_string('backupnameformat'),99,false);
$filename .= '.txt';
header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=$filename");
header("Expires: 0");
header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
header("Pragma: public");
$archivo = 'Apellidos y Nombre;Objeto;Numero de Accesos;Seccion'."\n";
foreach($set_de_resultados as $fila){
$nombre_completo = $fila->lastname.', '.$fila->firstname;
$archivo .= $nombre_completo.';'.$fila->Nombre.';'.$fila->Accesos.';'.$fila->orden."\n";
}
echo $archivo;
exit;
}
Efectivamente, esa es la forma habitual para exportar el archivo a través del navegador. Se declaran las cabeceras, se obtienen los datos y se muestran por pantalla, pero al ser la salida un archivo de texto, el navegador usará el programa asociado por defecto.
De todas formas, revisa el código de Moodle, porque en algún lado puede que exista una función para exportar a txt o al menos ejemplos.
El tema es que pongo eso, y me lo saca por pantalla en lugar de un descargable.
Lo he probado tambien creando un archivo en el servidor y leyendolo luego con readfile, pero nada, me hace lo mismo (mostrarlo en el navegador).
¿Alguna sugerencia?
Me respondo a mi mismo:
Al principio del fichero tenia scripts de javascript.
Se ve que esa entrada entorpece a las cabeceras.
Moviendo de sitio los scripts, problema solucionado.