Foros del Web » Programando para Internet » PHP »

Generar varios doc desde BD

Estas en el tema de Generar varios doc desde BD en el foro de PHP en Foros del Web. Hola a todos, Necesito generar varios documentos para diferentes registros de una bbdd, tengo una plantilla de rtf, en la cual inserto valores de una ...
  #1 (permalink)  
Antiguo 20/12/2005, 05:20
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 19 años, 7 meses
Puntos: 0
Generar varios doc desde BD

Hola a todos,

Necesito generar varios documentos para diferentes registros de una bbdd,
tengo una plantilla de rtf, en la cual inserto valores de una BBDD, pero hay casos, la mayoria, en los cuales necesito generar varios doxumentos a la vez y es lo que no consigo, sólo me abre uno.

Gracias de antemano.
  #2 (permalink)  
Antiguo 20/12/2005, 06:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Pero .. como entregas el RTF generado? .. lo entregas directamente al buffer de salida de PHP (con header(......)) o generas un archivo fisicamente en el servidor?.

La opción de entregar directamente al buffer de salida sólo puede entregra un archivo a la vez (para inciar la descarga).

Un saludo,
  #3 (permalink)  
Antiguo 20/12/2005, 06:46
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 19 años, 7 meses
Puntos: 0
Exacto, lo genero con header, para dar la posibilidad de que lo abran o guarden donde escogan.

Por favor, me podrías decir la otra manera.

Muchas gracias.
  #4 (permalink)  
Antiguo 20/12/2005, 07:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
La otra manera es que generes archivos . .para eso, de tu actual código quita tu header() y genera el archivo con funciones de fopen() .. fwrite() y afines.

De esta forma tu código PHP podría generar N archivos y por otro lado generas los links para que el usurio los descargue uno por uno .. o incluso podrías hasta generar un "zip" de todo esto para descargarlo (al menos "empaquetado" quedaría todo).

Para generar tu ZIP podrías usar:
http://www.planet-source-code.com/vb...d=957&lngWId=8

Tras la generación del ZIP .. con la misma filosofía del "header()" (pero con el "content-type" adecuado) enviarías a descargar tu archivo generado comprimido (el ejemplo que te dejé muestra ambas alternativas: generar el archivo en el servidor o forzar la descarga automáticamente) y si no necesitas más esos archivos generados "temporalmente" .. los eliminas en tras la generación del ZIP (con unlink()) del servidor.

Viendo el código que genera los "zip" .. con leves modificaciones podrías hasta evitar tener que generar tus archivos RTF "temporales" ..

Un saludo,
  #5 (permalink)  
Antiguo 20/12/2005, 07:20
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 19 años, 7 meses
Puntos: 0
Muchas gracias,

ahora lo miraré, el problema (o no, no lo sé) es que lo que hago es abrir una plantilla de rtf, y en dicha plantilla insertó unos valores en unos 'marcadores'.
Te enseño el código:

header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=doc.doc");

//Abrimos el archivo de plantilla

$filename="Anexo.rtf";
$output=file_get_contents($filename);

//Sustituimos los marcadores de posición en la plantilla por los datos
$output=str_replace('<<NAME>>', strtoupper($name), $output);

echo $output;

Así es como lo tengo.

Otra vez gracias.
  #6 (permalink)  
Antiguo 20/12/2005, 07:32
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Toma el contenido de $output y lo grabas en un archivo, luego lo comprimes y lo entregas al cliente para bajarlo.
  #7 (permalink)  
Antiguo 21/12/2005, 06:09
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 19 años, 7 meses
Puntos: 0
Muchas gracias,

ya está resuelto con vuestra ayuda.
Otra duda, al generar un excel porque un campo aparece con formato científico??, alguien sabe como cambiarlo desde php.

Saludos y lo dicho muchas gracias.
  #8 (permalink)  
Antiguo 21/12/2005, 06:26
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
No es por un asunto de ancho de la celda?
  #9 (permalink)  
Antiguo 21/12/2005, 06:49
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 19 años, 7 meses
Puntos: 0
Pues he cambiado el tamaño y le da lo mismo.
  #10 (permalink)  
Antiguo 21/12/2005, 07:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Sería bueno que inciases un nuevo tema y que indicases el código que usas + una muestra de datos de los que originan el problema.

Un saludo,
  #11 (permalink)  
Antiguo 21/12/2005, 07:32
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 19 años, 7 meses
Puntos: 0
Lo siento,

ahora abro otro tema.

Saludos.
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 18:30.