Foros del Web » Programando para Internet » PHP »

personalizar documento word

Estas en el tema de personalizar documento word en el foro de PHP en Foros del Web. Hola, estoy teniendo un problema con un script y no encuentro donde esta el fallo. A ver si vosotros me podeis ayudar. Por una parte, ...
  #1 (permalink)  
Antiguo 07/01/2010, 02:01
 
Fecha de Ingreso: septiembre-2007
Mensajes: 29
Antigüedad: 16 años, 7 meses
Puntos: 0
personalizar documento word

Hola, estoy teniendo un problema con un script y no encuentro donde esta el fallo. A ver si vosotros me podeis ayudar. Por una parte, en un documento guardado como plantilla.rtf tengo este codigo:

Estimados Señores:
#*nombre*#
JOSEFINA SANCHEZ MOLINER, Presidenta …


Tras ejecutar el codigo que mas abajo escribo, me genera un documento xxxcertificado.rtf pero con el mismo contenido. Es decir, #*nombre*# no ha sido sustituido por el valor de la base de datos.

Muchas gracias

Código PHP:
Ver original
  1. <?
  2. //Funcion que lee un archivo de texto y lo mete en una cadena
  3. function leef ($fichero) {
  4.     $texto = file($fichero);
  5.     $tamleef = sizeof($texto);
  6.     for ($n=0;$n<$tamleef;$n++) {$todo= $todo.$texto[$n];}
  7.     return $todo;
  8. }
  9.  
  10.  
  11. //funcion que genera un rtf
  12. function rtf($sql, $plantilla, $fsalida, $matequivalencias){
  13. $pre=time();
  14. //$fsalida="/rtf/".$pre.$fsalida;
  15. $fsalida= "".$pre.$fsalida;
  16. mysql_connect("localhost", "user", "pass");
  17. //Paso no 1.-Leo una plantilla rtf
  18. $txtplantilla = leef($plantilla);
  19. //Paso no.2 Saca cabecera, el cuerpo y el final
  20. $matriz=explode("sectd", $txtplantilla);
  21. $cabecera=$matriz[0]."sectd";
  22. $inicio=strlen($cabecera);
  23. $final=strrpos($txtplantilla,"}");
  24. $largo=$final-$inicio;
  25. $cuerpo=substr($txtplantilla, $inicio, $largo);
  26. //Paso no.3 Escribo el fichero
  27. $punt = fopen($fsalida, "w");
  28. fputs($punt,$cabecera);
  29. $result = mysql_query($sql);
  30. while($row=mysql_fetch_array($result)){
  31.       $despues=$cuerpo;
  32.       foreach ($matequivalencias as $dato) {
  33.       $datosql=$row[$dato[1]];
  34.       $datosql= stripslashes ($datosql);
  35.       $datortf=$dato[0];
  36.       $despues=str_replace($datortf,$datosql,$despues);
  37.     }
  38.     fputs($punt,$despues);
  39.       $saltopag="\par \pre \par";
  40.     fputs($punt,$saltopag);
  41. }
  42. fputs($punt,"}");
  43. fclose ($punt);
  44. return $fsalida;
  45. }
  46.  
  47. $plantilla ="plantilla.rtf";
  48. $sql = "SELECT name from jos_users where id=62";
  49. $equivalencias[0][0]="#*nombre*#";
  50. $equivalencias[0][1]="name";
  51. //$equivalencias[1][0]="#*sitio*#";
  52. //$equivalencias[1][1]="municipio";
  53. $salida = rtf($sql, $plantilla, "certificado.rtf", $equivalencias);
  54. $salida ="<A href='$salida'>Obtener</a>";
  55. echo "<p>$salida</p>";
  56. ?>
  #2 (permalink)  
Antiguo 07/01/2010, 07:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: personalizar documento word

¿Por qué quieres declarar una parametro en la función y luego llamar asignarle el nombre de la base de datos? ¿No será mejor que elimines ese parametro y escribas siempre directamente el nombre del campo de la base de datos?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/01/2010, 15:32
 
Fecha de Ingreso: septiembre-2007
Mensajes: 29
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: personalizar documento word

Hola, pues la verdad es un código que copié de la red y adapté conforme mis datos. No me preocupé de limpiar el código. Y porqué el autor lo escribió así, no lo sé. Pero ese no es mi problema. Mi problema es que al generarme el nuevo archivo, no me actualiza de la base de datos (#*nombre*#), sino que me genera un archivo identico al original. Es decir,
Tengo plantilla.rtf con el contenido:

Estimado Señor:
#*nombre*#

presidente de la asociación…


Y tengo que conseguir otro archivo xxxcertificado.rtf con el contenido:

Estimado Señor:
Carlos Vicente Martinez //extraido de la base de datos

presidente de la asociación…


Si me pudierais ayudar lo agradezco muchisimo.
Gracias.

Etiquetas: documento, personalizar, word
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 19:11.