Foros del Web » Programando para Internet » PHP »

Para grabar un archivo dentro del servidor

Estas en el tema de Para grabar un archivo dentro del servidor en el foro de PHP en Foros del Web. Bueno gente.. otra vez molestandolos.. hace unos dias estuve por estos lados preguntando sobre como exportar los datos de mi web (en mysql) a un ...
  #1 (permalink)  
Antiguo 03/11/2008, 21:30
 
Fecha de Ingreso: enero-2007
Mensajes: 135
Antigüedad: 17 años, 3 meses
Puntos: 1
Para grabar un archivo dentro del servidor

Bueno gente.. otra vez molestandolos..
hace unos dias estuve por estos lados preguntando sobre como exportar los datos de mi web (en mysql) a un archivo exel. por suerte internet es grande y consegui un script que lo puedo adaptar perfectamente a mis necesidades....
pero...
el tema es el siguiente, yo no quiero que me lo exporte para guardar en el disco como es este ejemplo sino que lo guarde este .xls dentro del servidor..
se puede??
no pido que me lo hagan ni mucho menos, solo si saben si se puede y por donde buscar.
a continuacion les paso el codigo..
muchas gracias..
Código PHP:
<?
// Connect database.
mysql_connect("localhost","","");
mysql_select_db("tutorial");

// Get data records from table.
$result=mysql_query("select * from name_list order by id asc");

// Functions for export to excel.
function xlsBOF() {
echo 
pack("ssssss"0x8090x80x00x100x00x0);
return;
}
function 
xlsEOF() {
echo 
pack("ss"0x0A0x00);
return;
}
function 
xlsWriteNumber($Row$Col$Value) {
echo 
pack("sssss"0x20314$Row$Col0x0);
echo 
pack("d"$Value);
return;
}
function 
xlsWriteLabel($Row$Col$Value ) {
$L strlen($Value);
echo 
pack("ssssss"0x204$L$Row$Col0x0$L);
echo 
$Value;
return;
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=orderlist.xls ");
header("Content-Transfer-Encoding: binary ");

xlsBOF();

/*
Make a top line on your excel sheet at line 1 (starting at 0).
The first number is the row number and the second number is the column, both are start at '0'
*/

xlsWriteLabel(0,0,"List of car company.");

// Make column labels. (at line 3)
xlsWriteLabel(2,0,"No.");
xlsWriteLabel(2,1,"Company");

$xlsRow 3;

// Put data records from mysql by while loop.
while($row=mysql_fetch_array($result)){

xlsWriteNumber($xlsRow,0,$row['id']);
xlsWriteLabel($xlsRow,1,$row['name']);

$xlsRow++;
}
xlsEOF();
exit();
?>
  #2 (permalink)  
Antiguo 03/11/2008, 22:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Para grabar un archivo dentro del servidor

Es que el código está enviando al navegador (echo) el archivo XLS. Lo que puedes hacer es en vez de enviar el contenido guardarlo en una variable y guardar en un archivo usando file_put_contents.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 04/11/2008, 09:32
 
Fecha de Ingreso: enero-2007
Mensajes: 135
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Para grabar un archivo dentro del servidor

muchas gracias...
pero entonces cambio unicamnete los echo?? los headers los mantengo asi??
perdon por preguntar tanto..
  #4 (permalink)  
Antiguo 04/11/2008, 10:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Para grabar un archivo dentro del servidor

Los headers en este caso ya no son necesarios, ya que lo que hacen es indicar al navegador que la salida enviada debe ser descargada al disco por el usuario.

Solo no te olvides de guardar en modo binario .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 04/11/2008, 10:32
 
Fecha de Ingreso: enero-2007
Mensajes: 135
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Para grabar un archivo dentro del servidor

muchas gracias.. en un rato voy a tratar de hacerlo andar..
cualquier duda te molesto de vuelta.. muchas gracias
  #6 (permalink)  
Antiguo 04/11/2008, 10:48
 
Fecha de Ingreso: enero-2007
Mensajes: 135
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Para grabar un archivo dentro del servidor

yo de vuelta.. estoy viendo el codigo perdon por mi ignorancia
pero viendo el codigo pienso (seguramente equivocado) si cambio los echo por la funcion que vos me decis, se seguiria creando el .xls??
  #7 (permalink)  
Antiguo 04/11/2008, 10:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Para grabar un archivo dentro del servidor

No entiendo, no se trata solo de reemplazar los echo por la función, la función tiene parámetros, uno de ellos es el nombre del archivo, lo que yo había sugerido es guardar primeramente todo el contenido en una variable y después ejecutar una sola vez el file_put_contents(), o usar fopen(), después sucesivas llamadas a fwrite() y finalmente a fclose(), como prefieras.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 04/11/2008, 10:56
 
Fecha de Ingreso: enero-2007
Mensajes: 135
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Para grabar un archivo dentro del servidor

ahora si entendi... (eso espero)
muchas 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 16:20.