Foros del Web » Programando para Internet » PHP »

ayuda variable Generar documentos de Word RTF con php(desarrolloweb.com)

Estas en el tema de ayuda variable Generar documentos de Word RTF con php(desarrolloweb.com) en el foro de PHP en Foros del Web. hola muy buenas estoy intando hacer funcionar este script tan bueno,pero hay cosas que no logro resolver, como la variable de $Referencia que no lo ...
  #1 (permalink)  
Antiguo 29/01/2006, 10:44
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
ayuda variable Generar documentos de Word RTF con php(desarrolloweb.com)

hola muy buenas estoy intando hacer funcionar este script tan bueno,pero hay cosas que no logro resolver, como la variable de $Referencia que no lo puedo poner como nombre del archivo Rtf que genera el rtf, y el script tiene puesto la fecha para que no se repita el nombre del archivo, y yo quiero poner la referencia, pues esa tonteria que sera para vosotro pues a mi no me sale,
dejo el codigo aqui; indicando donde esta esa variable;
el archivo lo generartf.php lo abro del siguiente enlance pasando la variable referencia;
Código PHP:
<a href="generartf.php?Referencia=".$row['Referencia']."\"> 
supongo que no tenga que crear la variable si la paso por url
y aqui el scrip completo donde quiero mostrarlo:
Código PHP:
<?php
//Funcion que lee un archivo de texto y lo mete en una cadena
function leef ($fichero) {
    
$texto file($fichero);
    
$tamleef sizeof($texto);
    for (
$n=0;$n<$tamleef;$n++) {$todo$todo.$texto[$n];}
    return 
$todo;
}


//funcion que genera un rtf
function rtf($sql$plantilla$fsalida$matequivalencias){
$pre=time();//aqui esta el nombre archivo para que no se repite hora
$fsalida="C:/prueba/".$pre.$fsalida//aqui quiero poner $referencia por $pre, pero no sale 
mysql_connect("localhost""root""");
//Paso no 1.-Leo una plantilla rtf
$txtplantilla leef($plantilla);
//Paso no.2 Saca cabecera, el cuerpo y el final
$matriz=explode("sectd"$txtplantilla);
$cabecera=$matriz[0]."sectd";
$inicio=strlen($cabecera);
$final=strrpos($txtplantilla,"}");
$largo=$final-$inicio;
$cuerpo=substr($txtplantilla$inicio$largo);
//Paso no.3 Escribo el fichero
$punt fopen($fsalida"w");
fputs($punt$cabecera);
mysql_select_db("inmobiliaria");
$result =mysql_query($sql); 
While(
$row=mysql_fetch_object($result)){

      
$despues=$cuerpo;
      foreach (
$matequivalencias as $dato) {
      
$datosql=$row->$dato[1];
      
$datosqlstripslashes ($datosql);
      
$datortf=$dato[0];
      
$despues=str_replace($datortf,$datosql,$despues);
    }
    
fputs($punt,$despues);
      
$saltopag="\par \page \par";
    
fputs($punt,$saltopag);
}
fputs($punt,"}");
fclose ($punt);
return 
$fsalida;
}

$plantilla "includes/plantilla.rtf";
$sql = (" SELECT * FROM formulario  WHERE Referencia='".$_GET['Referencia']."'");

$equivalencias[0][0]="#*Provincia*#";
$equivalencias[0][1]="Provincia";
$equivalencias[1][0]="#*Referencia*#";
$equivalencias[1][1]="Referencia";
$salida rtf($sql$plantilla"plantilla.rtf"$equivalencias);
$salida ="<A href='$salida'>Obtener RTF</a>";
echo 
"<p>$salida</p><br>";//enlace directo que crea para abrirlo
?>
bueno haber si podeis ayudarme, y otra cosa y una vez que genera el Rtf que me lo genera bien por ahora, me crea un enlace directo para abrirlo desde la web pero no me abre el word tengo que ir a la carpeta para abrirlo, haber si saber porque
bueno muchas gracias, y siento el no saber hacerlo,
saludos
  #2 (permalink)  
Antiguo 29/01/2006, 18:53
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
Haber te propongo dos correcciones a los codigos aqui va la primera

Código PHP:
echo "<a href=\"generartf.php?Referencia=".$row['Referencia']."\">" 
Código PHP:
<?php
//Funcion que lee un archivo de texto y lo mete en una cadena
function leef ($fichero) {
    
$texto file($fichero);
    
$tamleef sizeof($texto);
    for (
$n=0;$n<$tamleef;$n++) {$todo$todo.$texto[$n];}
    return 
$todo;
}


//funcion que genera un rtf
function rtf($sql$plantilla$fsalida$matequivalencias,$pre){
$fsalida="C:/prueba/".$pre.$fsalida
mysql_connect("localhost""root""");
//Paso no 1.-Leo una plantilla rtf
$txtplantilla leef($plantilla);
//Paso no.2 Saca cabecera, el cuerpo y el final
$matriz=explode("sectd"$txtplantilla);
$cabecera=$matriz[0]."sectd";
$inicio=strlen($cabecera);
$final=strrpos($txtplantilla,"}");
$largo=$final-$inicio;
$cuerpo=substr($txtplantilla$inicio$largo);
//Paso no.3 Escribo el fichero
$punt fopen($fsalida"w");
fputs($punt$cabecera);
mysql_select_db("inmobiliaria");
$result =mysql_query($sql); 
While(
$row=mysql_fetch_object($result)){

      
$despues=$cuerpo;
      foreach (
$matequivalencias as $dato) {
      
$datosql=$row->$dato[1];
      
$datosqlstripslashes ($datosql);
      
$datortf=$dato[0];
      
$despues=str_replace($datortf,$datosql,$despues);
    }
    
fputs($punt,$despues);
      
$saltopag="\par \page \par";
    
fputs($punt,$saltopag);
}
fputs($punt,"}");
fclose ($punt);
return 
$fsalida;
}

$plantilla "includes/plantilla.rtf";
$sql = (" SELECT * FROM formulario  WHERE Referencia='".$_GET['Referencia']."'");

$equivalencias[0][0]="#*Provincia*#";
$equivalencias[0][1]="Provincia";
$equivalencias[1][0]="#*Referencia*#";
$equivalencias[1][1]="Referencia";
$salida rtf($sql$plantilla"plantilla.rtf"$equivalencias,$_GET['Referencia']);
$salida ="<A href='$salida'>Obtener RTF</a>";
echo 
"<p>$salida</p><br>";//enlace directo que crea para abrirlo
?>
  #3 (permalink)  
Antiguo 30/01/2006, 07:30
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 16 años
Puntos: 4
El codigo original tiene un errorcillo de digitación:

http://www.forosdelweb.com/f18/generando-archivos-rtf-con-php-308058/
__________________
EL LIMITE ES EL UNIVERSO
  #4 (permalink)  
Antiguo 30/01/2006, 09:12
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
muchas gracias Dopon, eso de la referencia es lo que queria, que maquina,
y Jpogsistem gracias ya me fije primero hay antes de hacer nada y corregi esas cosas, pero solo una cosa mas como meto una variable($default) dentro del word estoy intentando meter como lo hace hay con la equivalencias,esto es como lo hago;aunque no creo que salga;no se si lo planteo bien
Código PHP:

<?php
//Funcion que lee un archivo de texto y lo mete en una cadena
function leef ($fichero) {
    
$texto file($fichero);
    
$tamleef sizeof($texto);
    for (
$n=0;$n<$tamleef;$n++) {$todo$todo.$texto[$n];}
    return 
$todo;
}


//funcion que genera un rtf
function rtf($sql$plantilla$fsalida$matequivalencias,$pre){
$fsalida="C:/prueba/".$pre.$fsalida
mysql_connect("localhost""root""");
//Paso no 1.-Leo una plantilla rtf
$txtplantilla leef($plantilla);
//Paso no.2 Saca cabecera, el cuerpo y el final
$matriz=explode("sectd"$txtplantilla);
$cabecera=$matriz[0]."sectd";
$inicio=strlen($cabecera);
$final=strrpos($txtplantilla,"}");
$largo=$final-$inicio;
$cuerpo=substr($txtplantilla$inicio$largo);
//Paso no.3 Escribo el fichero
$punt fopen($fsalida"w");
fputs($punt$cabecera);
mysql_select_db("inmobiliaria");
$result =mysql_query($sql); 
While(
$row=mysql_fetch_object($result)){

      
$despues=$cuerpo;
      foreach (
$matequivalencias as $dato) {
      
$datosql=$row->$dato[1];
      
$datosqlstripslashes ($datosql);
      
$datortf=$dato[0];
      
$despues=str_replace($datortf,$datosql,$despues);
    }
    
fputs($punt,$despues);
      
$saltopag="\par \page \par";
    
fputs($punt,$saltopag);
}
fputs($punt,"}");
fclose ($punt);
return 
$fsalida;
}

$plantilla "includes/plantilla.rtf";
$sql = (" SELECT * FROM formulario  WHERE Referencia='".$_GET['Referencia']."'");
if(
$row['Foto1_binario']==""){//aqui esta la variable!!!!

$default="<table><tr><td><img src='imagenes/Nodisponible.jpg'></td></tr></table>";
}else{
$default="<table>  
<tr>
<td>
<img border=\"0\" src=\"verfoto1.php?Referencia="
.$row['Referencia']."\" width='120' height='120'\">
</td></table>
"
;
}
$equivalencias[0][0]="#*Provincia*#";
$equivalencias[0][1]="Provincia";
$equivalencias[1][0]="#*Referencia*#";
$equivalencias[1][1]="Referencia";
$equivalencias[2][0]="#*default*#";//asin la quiero mostrar la variable
$equivalencias[2][1]="default";
$salida rtf($sql$plantilla"plantilla.rtf",$equivalencias,$_GET['Referencia']);
$salida ="<A href='$salida'>Obtener RTF</a>";
echo 
"<p>$salida</p><br>";//enlace directo que crea para abrirlo que no lo abre
?>
si saliera esto no veas que bien saldria el script, muchas gracias por ayudar, te lo agradezco
saludos
  #5 (permalink)  
Antiguo 30/01/2006, 09:22
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 16 años
Puntos: 4
Resumiento dime Algo sobre lo que quieres..............no deseas que te salga el documento con nombre por ejemplo 1138631094plantilla.rtf sino que te salga con lo que dices "referencia" que ha de ser un ID del registro al cual le esás generando el documento................es eso ???

Saludos.
__________________
EL LIMITE ES EL UNIVERSO
  #6 (permalink)  
Antiguo 30/01/2006, 09:34
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
si es eso, pero eso Dopon ya me lo ha corregido y me lo ha puesto ,y me sale bien, ahora solo me queda mostrar esa variable $default que lo metido dentro del codigo de antes, y he puesto como lo estoy haciendo dentro del codigo pero no sale, no la muestra el word vamos ni la interpreta ni nada,gracias Jpogsistem por el interes
  #7 (permalink)  
Antiguo 30/01/2006, 10:20
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
hmm haber nunca he usado ese script que es en si lo que hace con el vector referencias[] los valores de ese vector como los interpretas, y asi te ayudo , por favor pon el plantilla.rtf y ademas un ejemplo d eun documento generado de forma correcta, asi como te ha venido trabajando
  #8 (permalink)  
Antiguo 30/01/2006, 10:32
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
gracias Dopon, el plantilla.rtf no esta terminado, solo tengo puesto dos codigos de prueba este es el plantilla.rtf
Código PHP:
Referencia#*Referencia*#             Provincia:#*Provincia*#   


Foto Principal

#*default*# //aqui estoy haciendo las pruebas del $default pa mostrarlo


#*$default*# 

$default 
y este el generado;
Código PHP:
Referencia25             Provincia:malaga   


Fotos

#*default*#//aqui no muestra nada no hay que hacer para enviar esa variable


#*$default*# 

$default 
muchas gracias Dopon
  #9 (permalink)  
Antiguo 30/01/2006, 13:16
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
Haber para que te funcione el default debe ser un campo de la tabla formulario si no lo es no te va a salir (Si miras referencia y provincia son campos de la DB provincia) dime que es lo que deses que sea default? una variable dentro del codigo o una variable enviada al php o un texto estatico en la plantilla?
  #10 (permalink)  
Antiguo 30/01/2006, 13:28
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
gracias Dopon, $default es una variable que recoge una foto en binario de la base de datos(Foto1_binario), que la recoge de la siquiente manera
Código PHP:
if($row['Foto1_binario']==""){//aqui esta la variable!!!!

$default="<table><tr><td><img src='imagenes/Nodisponible.jpg'></td></tr></table>";
}else{
$default="<table>  
<tr>
<td>
<img border=\"0\" src=\"verfoto1.php?Referencia="
.$row['Referencia']."\" width='120' height='120'\">
</td></table>
"
;

y para poder mostrarla normalme tengo hacerlo asin en la web si no me muestra puro codigo, y en la web muestro de la siquiente manera:
este es el archivo de $default<img border=\"0\" src=\"verfoto1.php?Referencia=".$row['Referencia']."\"
y este el codigo del archivo
Código PHP:
<?php

if(isset($_GET['Referencia'])) {
include(
"conexion.inc.php"); 
$link Conectarse();// AsÃ* llamaremos a la función que tenÃ*a los datos para conectarse

$sql "SELECT Foto1_binario,Foto1_tipo FROM formulario WHERE Referencia='".$_GET['Referencia']."'";
$result mysql_query($sql) or die (mysql_error()); // Enviamos la sentencia SQL al serv
 //   $consulta = mysql_query($sql,$conexion);


$datos mysql_result($result,0,"Foto1_binario");//recoje la foto de la base de datos
$tipo mysql_result($result,0,"Foto1_tipo");//recoje el tipo de imagen para mostrarla

  
header("Content-type: $tipo");//aqui muestra el tipo de imagen y le indica el tipo del archivo
   
    
echo $datos;

}
?>
y la muestro con $default

de todas formas si ves que es imposble pues, de todas formas muchas gracias Dopon,,
  #11 (permalink)  
Antiguo 30/01/2006, 13:35
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
Hmm ya veo tu lo que deseas es incluir una imagen en el rtf?

si es asi mira bien que la variable default
Código PHP:
$default="<table><tr><td><img src='imagenes/Nodisponible.jpg'></td></tr></table>";
}else{
$default="<table>  
<tr>
<td>
<img border=\"0\" src=\"verfoto1.php?Referencia="
.$row['Referencia']."\" width='120' height='120'\">
</td></table>
"

es un codigo en formato html y aun asi lo que estas metiendo en el rtf no e suna imagen sino un codigo html que muestra una imagen ;)

si lo que dseas es mostrar una imagen que dias vino uno preguntando acerca de eso y lo unico que el pude ayudar fue referenciarlo a que averiguara como los Rich Edit Controls coificaban una imagen al introducirla en un rtf
  #12 (permalink)  
Antiguo 30/01/2006, 14:33
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
si Dopon lo que quiero es mostrar una imagen en el rtf,averiguare lo de los Rich Edit Controls a ver si puedo hacerlo, haber si no es muy chungo, de todas formas Dopon agradezco muchisimo la ayuda que me has dado
muchos saludos Dopon,
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 08:32.