Foros del Web » Programando para Internet » PHP »

R&OS manejo de tablas (creando PDF)

Estas en el tema de R&OS manejo de tablas (creando PDF) en el foro de PHP en Foros del Web. Holas a todos, quiero hacer unos reportes de unas consultas q hago a mi base de dtaos postgre y quiero q en el pdf se ...
  #1 (permalink)  
Antiguo 17/08/2006, 15:02
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
R&OS manejo de tablas (creando PDF)

Holas a todos,

quiero hacer unos reportes de unas consultas q hago a mi base de dtaos postgre y quiero q en el pdf se me muestren los resultados,

ya logre generar el pdf y hasta las tablas pero no me salen como deseo. es q no domino bien esto, tome mas o menos el ejemplo q esta en las faq's pero no me funcionaba, aca les coloco el codigo a ver si me pueden ayudar, quiero hacer algo parecido a lo q aparece en las faq's


Código PHP:
<?php
include ('class.ezpdf.php');
$pdf =& new Cezpdf();
$pdf->selectFont('./fonts/Helvetica.afm');
include(
"Conectarse.php");
$conn=Conectarse();



$query="SELECT * FROM contratos order By oferta";
$result=pg_Exec($conn,$query);
$filas=pg_num_rows($result);


 if (
$row=pg_fetch_array($result))

{
$data = array(); 
do
 {

$oferta=$row['oferta'];
$contrato =$row["contrato"];
$nombre=$row["nom_contrato"];

$data[] = array(array('oferta'=>$oferta,'contrato'=>$contrato,'nombre'=>$nombre));


}
 while(
$row=pg_fetch_array($result));


}
 else 
{
echo 
"<div align='center'><h4 class='style5'>&iexcl; No se ha encontrado ning&uacute;n Contrato !</h4></div>"
}

for (
$i=0;$i<$filas;$i++)
$pdf->ezTable($data[$i]);
$pdf->ezStream();

pg_close($conn);
?>
__________________
.-._.-. [email protected]_.-.
  #2 (permalink)  
Antiguo 17/08/2006, 18:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. que es lo que no te sale o quieres conseguir (podrìas poner una muestra para ver lo que deseas obtener y lo que obtienes en la actualidad?)

Así la gente que pueda colaborarte se hará una idea más clara del problema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/08/2006, 08:42
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
asi me queda cuando hago la consulta y lo muestro en el pdf:



y quiero q se vea una tabla normal como el ejemplo de las Faq's
__________________
.-._.-. [email protected]_.-.
  #4 (permalink)  
Antiguo 18/08/2006, 09:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Resumistes mucho el código que usas ..

En el ejemplo de las FAQ's se definen más parámetros para la definición de tabla que hace el método adecuado de R&OS. También si te fijas ... Tu estás generando UNA tabla para cada "registro" que vas a presentar (por qué lo metes en tu bucle for():

for ($i=0;$i<$filas;$i++)
$pdf->ezTable($data[$i]);
$pdf->ezStream();

Si quieres definir una "cabecera" de la tabla y los resultados de los registros abajo (tal cual la FAQ expone y se observa) .. Debes generar tu array $data con tus datos para luego pasarselo al método que hace la tabla (esto ya lo haces) .. Lo mismo que definir el array que define la "cabecera": $cols. Puedes definir también otro array más para propiedades de alineamiento de cada celda ...

En resumen .. quita ese for() antes de $pdf->ezTable($data[$i]); ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 18/08/2006, 09:33
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
umm gracias, tienes razon solo q como no me imprimia nada por eso lo hice asi, pero ya vi cual era el error, ya me funciono, haciendo lo q me dijiste de la cabecera $cols... pongo el codigo, es casi lo mismo q en la faq's, por si alguien lo necesita.. esto es solo un ejemplo sencillo...

Código PHP:
<?php
include ('class.ezpdf.php');
$pdf =& new Cezpdf();
$pdf->selectFont('./fonts/Helvetica.afm');
include(
"Conectarse.php");
$conn=Conectarse();



$query="SELECT * FROM contratos order By oferta";
$result=pg_Exec($conn,$query);
$filas=pg_num_rows($result);

$cols = array('oferta'=>'oferta','contrato'=>'contarto','nombre'=>'nombre');
 if (
$row=pg_fetch_array($result))

{
$data = array(); 
do
 {

$oferta=$row['oferta'];
$contrato =$row["contrato"];
$nombre=$row["nom_contrato"];

$data[] = array('oferta'=>$oferta,'contrato'=>$contrato,'nombre'=>$nombre);



}
 while(
$row=pg_fetch_array($result));


}
 else 
{
echo 
"<div align='center'><h4 class='style5'>&iexcl; No se ha encontrado ning&uacute;n Contrato !</h4></div>"
}


$pdf->ezTable($data,$cols);
$pdf->ezStream();

pg_close($conn);
?>
__________________
.-._.-. [email protected]_.-.
  #6 (permalink)  
Antiguo 18/08/2006, 09:35
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
el error q tenia era esto: $data[] = array(array('oferta'=>$oferta,'contrato'=>$contrato,'nom bre'=>$nombre));

tenia un array de mas, seguro fue transcribiendo q me equivoq
__________________
.-._.-. [email protected]_.-.
  #7 (permalink)  
Antiguo 18/08/2006, 09:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Otro detalle ...

Ese menesaje de error que muestras en tal caso .. (en HTML), no deberías gestionarlo así ..

Si en $filas ya cuentas el n° de resultados .. debes validarlo tipo:

Código PHP:
$filas=pg_num_rows($result); 
if(
$filas 0){
  
// generas tu PDF y lo muestras:
$pdf->ezStream(); 
} else {
    
// generas una página HTML completa para mostrar tu mensaje de error o bien redireccionas a otra página (con header("Location: dondesea.php"); exit;)
   
echo "<div align='center'><h4 class='style5'>&iexcl; No se ha encontrado ning&uacute;n Contrato !</h4></div>";  

Cuando haces un xxx_query() .. y lo aplicas bajo un "if()" lo único que verificas así es si se ejecutó o no .. pero no si arrojó resultados o son los que esperas.

Un saludo,



Lo recomendable es redireccionar a otr script si tienes un error
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 18/08/2006, 12:43
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
umm, muchas gracias lo tomare en cuenta,

otra duda no se como usar la funcion ezImage para mostrar imagenes, me podrias mostrar un ejemplo de como se hace. gracias..
__________________
.-._.-. [email protected]_.-.
  #9 (permalink)  
Antiguo 18/08/2006, 12:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No he usado mucho R&OS (la probé una vez y me cambié luego a FPDF .. me gustó más la documentación que incluye y referencias de esta ...)

Pero, . .es cosa de que veas su manual (en PDF) que tiene R&OS ..

ezImage
ezImage(image,[padding],[width],[resize],[justification],[array border])

Lo más relevante es:

Cita:
$image is a string containing the filename and path of the jpeg or png image you want to insert into
the page. If allow_url_fopen is enabled in the PHP ini settings this can be an HTTP or FTP URL.
Lo normal es indicar un "path" de la imagen absoluto .. pero según indica .. también podrías tomar una ruta de imagen relativa (por http:// ... ).

Como todo elemento de R&OS .. se coloca desde la posición del "puntero" que tengas .. y con las propiedades de lo que le pueda encapsular (como una tabla por ejemplo y celda concreta con sus propiedades ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 18/08/2006, 13:07
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
umm ok, y no puedo usarlos los dos juntos, porq con fdpf si se hacer las imagenes pero no se generar las tablas.. eso sera posible (USAR FPDF Y R&OS)?
__________________
.-._.-. [email protected]_.-.
  #11 (permalink)  
Antiguo 18/08/2006, 13:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No, ... no se pueden usar juntos así como así ..

Si lees la documentación de R&OS veras como usar imagenes .. y si prestas atención a la misma documentación y ejemplos de FPDF veras como hacer tablas .. Creo que no se trata de ir usado uno u otro sistema por qué no sabes usar tal o cual funcionalidad .. en tal caso hay otras diferencias más "graves" que te podrían hacer decidirte por uno u otro método .. por ejemplo FPDF no soporta directamente tomar una imagen "binaria"´, sólo por una ruta absoluta dada .. R&OS tiene método para tomar una imagen "binaria" (almacenda en una variable que por ejemplo venga de una BBDD). (Ahora estoy en la duda si era al reves .. pero esa es una de las principales diferencias).

En R&OS tienes los métodos mencionados:
Cita:
addImage(img,x,y,w,[h],[quality=75])
y

Cita:
addJpegFromFile(imgFileName,x,y,w,[h]) (también esta para PNG de la misma forma)
A diferencia del otro método .. aquí tu "pegas" la imagen en las coordenadas que indiques manualmente .. (En ese caso te toca ir "calculando" las coordenadas si vas a presentar una série de imagenes por ejemplo ...) El otro método asume coordenadas en función al "puntero" donde esté y donde se encapsule.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 18/08/2006, 14:46
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
solo me funciona el ezImage

pero segun lo q entendi la unica forma de moverlo horizontalmente es conla justificacion (left, center, right).. pero yo lo quuiero en la parte superior derecha. pero se pega mucho y no se como hacer para q quede justo dodn quiero,

las addImage y addJpegFromFile no me aparece nada cuando la uso..
__________________
.-._.-. [email protected]_.-.
  #13 (permalink)  
Antiguo 18/08/2006, 15:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Mirovita Ver Mensaje
solo me funciona el ezImage

pero segun lo q entendi la unica forma de moverlo horizontalmente es conla justificacion (left, center, right).. pero yo lo quuiero en la parte superior derecha. pero se pega mucho y no se como hacer para q quede justo dodn quiero,

las addImage y addJpegFromFile no me aparece nada cuando la uso..
Si leistes bien que hacen ambas funciones .. tu lo que necesitas usar es addJpegFromFile() si es que tus imagenes son jpg.

Deberías tal vez repasar el tema de la definición de margenes del documento y ver si hay función para "mover el puntero" .. (FPDF la tiene por ejemplo) como para "llevar" el puntero a las coordenadas que necesitas y ahí usar el método eZimage()

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 18/08/2006, 15:14
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
ahora si me funciona, no se q era....

bueno seguire viendo q mas debo hacer y como usarlo, muchas gracias caballero...
__________________
.-._.-. [email protected]_.-.
  #15 (permalink)  
Antiguo 21/08/2006, 15:13
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
holas,

tengo un problemita, ya se incluir las imagenes y hacer las tablas.. pero la tabla me queda muy arriba en el docuemento pdf y no se como hacer para q aparezca a cierta distancia de la imagen..

este es el codigo q utilizo:

Código PHP:
<?php
include ('class.ezpdf.php');
$pdf =& new Cezpdf('LETTER','portrait');  

$pdf->selectFont('./fonts/Helvetica.afm');
include(
"Conectarse.php");
$conn=Conectarse();


$pdf->addJpegFromFile("Logo Incostas.jpg",500,700,80); 
$pdf->addText(30,750,8,'Hello World');

$query="SELECT * FROM contratos order By oferta";
$result=pg_Exec($conn,$query);
$filas=pg_num_rows($result);

$cols = array('oferta'=>'oferta','contrato'=>'contarto','nombre'=>'nombre');
 if (
$row=pg_fetch_array($result))

{
$data = array(); 
do
 {

$oferta=$row['oferta'];
$contrato =$row["contrato"];
$nombre=$row["nom_contrato"];

$data[] = array('oferta'=>$oferta,'contrato'=>$contrato,'nombre'=>$nombre);



}
 while(
$row=pg_fetch_array($result));


}
 else 
{
echo 
"<div align='center'><h4 class='style5'>&iexcl; No se ha encontrado ning&uacute;n Contrato !</h4></div>"
}


$pdf->ezTable($data,$cols,'Tabla de Prueba',array('fontSize'=>8,'xPos'=>'center',
'cols'=>array( 
                
'oferta'=>array('justification'=>'center'
                ,
'contrato'=>array('justification'=>'center'
                ,
'nombre'=>array('justification'=>'left'
                )
));
$pdf->ezStream();

pg_close($conn);
?>
y asi se ve el resultado ejemplo:



no se como hacer para q la tabla me aparezca mas abajo.. manejar las coordenadas verticales de la tabla..
__________________
.-._.-. [email protected]_.-.
  #16 (permalink)  
Antiguo 21/08/2006, 15:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Maneja los margenes con el método:

ezSetMargins(top,bottom,left,right)

Recuerda que si usas objetos como los de posicionar imagenes o similar que se basen en coordenadas absolutas .. esos no se veran afectados por la definición de margenes.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #17 (permalink)  
Antiguo 21/08/2006, 15:35
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
chevere ya me funciono, gracias cluster
__________________
.-._.-. [email protected]_.-.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 15:16.