Hola, aqui les muestro una solucion muy elegante que encontre, para crear reportes.
La solución que propongo necesita la creacion de un documento RTF, ¿como lo creas?. Bueno, en una hoja de Word, escribes lo siguiente:
Hola: #*NOMBRE*#
Tu mail es el siguiente: #*MAIL*#
Al guardar, cambias el tipo de documento, por RTF y listo.
"SE ESCRIBEN DE ESTA FORMA #*NOMBRE*#, PARA SABER EN QUE LUGAR SE ESCRIBIRÁ EL CONTENIDO DE LA BASE DE DATOS"
Despues creas una BD "DocuBD" para este caso.
Una tabla "Usuarios"
2 campos "nombre y mail"
Tambien puedes insertar algunos registros para probar la solución
El código es el siguiente:
< ?php
function leef($fichero)
{
$texto= file($fichero);
$tamleef = sizeof($texto);
for ($n=0; $n<$tamleef;$n++)
{ $todo = $todo.$texto[$n];}
return $todo;
}
function rtf($sql, $plantilla, $fsalida, $matequivalencias)
{
$pre=time();
//de esta forma no se sobrescriben los documentos
$fsalida=$pre.$fsalida;
$link=mysql_connect('localhost','root','');
$txtplantilla=leef($plantilla);
$matriz=explode("sectd",$txtplantilla);
$cabecera=$matriz[0]."sectd";
$inicio=strlen($cabecera);
$final=strrpos($txtplantilla,"}");
$largo=$final-$inicio;
$cuerpo=substr($txtplantilla,$inicio,$largo);
$punt = fopen($fsalida ,"w");
fputs($punt,$cabecera);
mysql_select_db("docubd",$link);
$result=mysql_query($sql,$link);
while($row=mysql_fetch_array($result))
{
$despues=$cuerpo;
foreach($matequivalencias as $dato)
{
$datosql=$row[$dato[1]];
$datosql=stripslashes($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="docu.rtf";
$sql = "SELECT nombre,mail FROM usuarios ORDER BY nombre";
$equivalencia[0][0]="#*NOMBRE*#";
$equivalencia[0][1]="nombre"; // ojo, cuidado, este valor es el nombre del campo en la base
$equivalencia[1][0]="#*MAIL*#";
$equivalencia[1][1]="mail"; //este también
$salida=rtf($sql,$plantilla,"certificado.rtf",$equivalencia);
echo "tus reportes fueron exitosamente creados";
?>
martes, 9 de enero de 2007
Suscribirse a:
Enviar comentarios (Atom)
13 comentarios:
hola victor, he quedado maravillado con esta solucion de reporte que planteaste, y lo sobre crar la tabla con los archivo en excel, me han servido de mucha ayuda... gracias...
Pero sabes tengo un problema, necesito saber algo sobre como puedes imprimir datos desde una tabla pero, digamos tener una hoja en php pero en la que los datos se impriman en una posicion fija con cierto formato, me explico...lo que quiero imprimir es una factura pero estas ya vien con su determina espacio donde escribir, lo que yo necesito es imprimr el nombre justo en el lugar de la factura... me explico bien..
hola.
quizas, la solucion que te voy a dar no es muy sana, pero por lo visto, funciona.
primero tendrias que crear una tabla, y hacer calzar con las filas y columnas, en las posiciones exactas pata la factura...
ma imagino que podrias ayudarte con una imagen de la factura, como fondo de tu tabla.
luego creas un script, y llamas a la función "windows.print();"
si no quieres que te aparescan los botones o los select-option, o cosas de este tipo... ocupa un css..
.button
{
BORDER-RIGHT: #cccccc 1px solid;
BORDER-TOP: #cccccc 1px solid;
FONT-SIZE: 10px;
BORDER-LEFT: #cccccc 1px solid;
COLOR: #ffffff;
BORDER-BOTTOM: #cccccc 1px solid;
FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
BACKGROUND-COLOR: gray
}
@media print
{
.button{display:none;}
}
el @media print es re importante...
ten en cuenta que tienes que hacer muchas pruebas, porque tu estas buscando posiciones especificas en la apntalla.. y eso depende de la rasolucion que estes ocupando, y ademas, del navegador...
ojala que ayude,.. y de todos modos voy a seguir buscando mas soluciones.
chau.
ohhhhhhhhhhhhhhhh VISTOR!
TODO UN GURU!!!!!!!!!!!!
gracias victor!!! te pasaste, la ultima consulta no habir a na forma de una vez ya generado el rtf doc que desde la misma paguina uno pueda imprimir ese archivo... una funcion que imprima archivos desde el pc osea si usando el codigo de arriva y quitandole el $pre=time(); me genera un archivo solo con el nombre, sea docu.rtf o docu.doc luego llamar a imprimir ese archivo?? bueno muchas gracias adiosss seguire visitando byebye
Hola. Has usado Agata Report para los reportes? Quiero usarlo pero no encuentro la manera de instalarlo en la PC, trabajo en Windows. Espero tu pronta respuesta, thanks!
Hola, he visto el codigo pero la verdad soy nueva en esto y quisiera saber como utilizarlo, ya esta el codigo pero luego como lo ejecuto para que me pueda desplegar el archivo rtf,me podrias ayudar por favor,necesito abrir archivos de crystal reports con php, que pueda ver el reporte, y segun entendi con el codigo que publicaste se puede, me podrias ayudar,te lo agradeceria mucho.
XD soy yo el malo? la onda q no me sirve el codigo =D me sale esto:
Warning: file(docu.rtf) [function.file]: failed to open stream: No such file or directory in C:\Archivos de programa\VertrigoServ\www\inc\popo.php on line 5
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Archivos de programa\VertrigoServ\www\inc\popo.php on line 33
tus reportes fueron exitosamente creados
malo malo
Hola amigos..tambien soy nueva en esto..necesito q me digan como es la forma en la cual se ejecuta lo del reporte,yo estoy trabajando con postgres,como seria entonces?..tengo q hacer un boton para enviarlo o algo asi?
Victor, en verdad de pasaste... El ejemplo para imprimir reportes en PHP con Word es de 10... es un codigo simple y sirve muchisimo...
Muy bien por tu aporte!!!! gracias!!
Para Christopher puedes probar haciendo tu machote en el archivo de rtf.. tal cual haces una copia de la factura que deseas imprmir, pero los campos que no desees imprimir puedes ponerlos en color blanco.. asi cuando imprimias esto no se imprimiran... es algo simple y quiza te puede ayudar muchisimo..
Un saludo!!!
Hola que tal, he visto que conoces mucho de php y quisiera saber si me pudieras ayudar ya que necesito saber como crear un reporte con el ireport en php lo has manejado?
si pudieras ayudarme estaria muy agradecido por tu tiempo pero de antemano gracias
lamento decirte que no he trabajado nunca con esa herramienta..
sorry.
atte.
victor
Hola Victor! alguna idea de por qué me sale este error? Existe algún requisito? Por favor!! Mil gracias!
HTTP Error 500.0 - Internal Server Error
C:\Program Files (x86)\PHP\php-cgi.exe - The FastCGI process exited unexpectedly
Hola una consulta, como podria implementar este reporte, pero para varias paginas; digamos un reporte de boletas de pago...
Gracias
Publicar un comentario