Foros del Web » Programando para Internet » PHP »

Consulta a tabla en ezPDF?

Estas en el tema de Consulta a tabla en ezPDF? en el foro de PHP en Foros del Web. Quiero pasar el resultado de una consulta SQL a una tabla en ezPDF guiado por un ejemplo del manual... Se supone que paso un arreglo ...
  #1 (permalink)  
Antiguo 17/09/2006, 14:10
Avatar de peperoni  
Fecha de Ingreso: febrero-2005
Mensajes: 24
Antigüedad: 19 años, 2 meses
Puntos: 0
Consulta a tabla en ezPDF?

Quiero pasar el resultado de una consulta SQL a una tabla en ezPDF guiado por un ejemplo del manual...

Se supone que paso un arreglo del tipo
Código PHP:
<?php 

include('../ezpdf/class.ezpdf.php');
$pdf =& new Cezpdf();
$pdf->selectFont('../ezpdf/fonts/Helvetica.afm');

$data = array(
        array(
'name'=>'Marconi','lastname'=>'Poveda''Age'=>'21'),
        array(
'name'=>'Denis''lastname'=>'Torres''Age'=>'21'),
        array(
'name'=>'Alam''lastname'=>'Romero''Age'=>'24'));
        
$pdf->ezTable($data);
$pdf->ezStream();

?>
Al hacer mysql_query se supone que obtengo un arreglo con la respuesta de la consulta que podria imprimir de la misma manera pero no me funciona...
Código PHP:
<?php 

include('../ezpdf/class.ezpdf.php');

$pdf =& new Cezpdf();
$pdf->selectFont('../ezpdf/fonts/Helvetica.afm');

function 
Conectar()
{
   if(!(
$link=mysql_connect("localhost","root",""))){
      echo 
"Error conectando a la base de datos.";
      exit();
   }
   if (!
mysql_select_db("test",$link)){
      echo 
"Error seleccionando la base de datos.";
      exit();
   }
   return 
$link;
}


$con Conectar();

$sql 'SELECT * FROM person';
$query mysql_query($sql$con);
$pdf->ezTable($query); //Esto no funciona :(
$pdf->ezStream();
?>
En que estoy mal?

Gracias...
  #2 (permalink)  
Antiguo 17/09/2006, 14:25
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
esta mal porque mysql_query no devuelve un array con los resultados, devuelve un identificador de consulta mysql (un tipo resource). Para crear tu array, debieras usar un ciclo while con la funcion mysql_fetch_array(), la cual devuelve un arreglo con los datos de un registro. La idea es que el ciclo while devuelva un array "tupla" por cada iteracion, y ese array "fila" guardarlo detro de otro array "tabla" que le pasaras a al metodo
$pdf->ezTable($query);
__________________
Blog | Tecnosquad
  #3 (permalink)  
Antiguo 17/09/2006, 14:46
Avatar de peperoni  
Fecha de Ingreso: febrero-2005
Mensajes: 24
Antigüedad: 19 años, 2 meses
Puntos: 0
Leyendo la docu de PHP fue lo primero que imagine... pero lo intente sin respuesta positiva :(

Código PHP:
<?php 

include('../ezpdf/class.ezpdf.php');

$pdf =& new Cezpdf();
$pdf->selectFont('../ezpdf/fonts/Helvetica.afm');

function 
Conectar()
{
   if(!(
$link=mysql_connect("localhost","root",""))){
      echo 
"Error conectando a la base de datos.";
      exit();
   }
   if (!
mysql_select_db("test",$link)){
      echo 
"Error seleccionando la base de datos.";
      exit();
   }
   return 
$link;
}


$con Conectar();

$sql 'SELECT * FROM person';
$query mysql_query($sql$con);
while(
$resul mysql_fetch_array($query)){
}
$pdf->ezTable($resul);
$pdf->ezStream();
?>
Esta es la forma que me sugerias?

Saludos::..
  #4 (permalink)  
Antiguo 17/09/2006, 15:13
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
le falta un detalle, esta bien el ciclo al parecer, pero dentro del ciclo no haces nada, lo unico que estas haciendo es reasignar a cada instante el arreglo de "tupla" en $result, pero no lo agregas a otro arreglo que represente una tabla

prueba reemplazando:
Código PHP:
while($resul mysql_fetch_array($query)){
}
$pdf->ezTable($resul); 
por:

Código PHP:
while($resul mysql_fetch_array($query)){
    
$array_auxiliar[] = $result;
}
$pdf->ezTable($array_auxiliar); 
__________________
Blog | Tecnosquad
  #5 (permalink)  
Antiguo 17/09/2006, 21:24
Avatar de peperoni  
Fecha de Ingreso: febrero-2005
Mensajes: 24
Antigüedad: 19 años, 2 meses
Puntos: 0
Muchas gracias ArrauKano, eso es lo que necesitaba...

Pero no se por que me imprime cada campo dos veces... los campos en mi base de datos son name, lastname y age pero me los imprime dos veces cada campo...

Saludos:..
  #6 (permalink)  
Antiguo 17/09/2006, 21:32
Avatar de peperoni  
Fecha de Ingreso: febrero-2005
Mensajes: 24
Antigüedad: 19 años, 2 meses
Puntos: 0
Agrege esto
Código PHP:
$pdf->ezTable($aux, array('name'=>'Nombre''lastname'=>'Apellido''age'=>'Edad'), 'Contenido de la BD'); 
Y solo me pone los campos que son, no se que pasaba antes... :(

Saludos y gracias!
  #7 (permalink)  
Antiguo 18/09/2006, 00:29
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
bueno, es conveniente que leas la documentacion, no solo los tutoriales y ejemplos, especificamente ese metodo.

recuerdo que esta clase trae un documento en pdf.

Bueno, si deseas continuar con este tema, puedo darete otras consideraciones:
* Ten en cuenta que cuando extraes los datos de la base estas alojando en algun espacio de la memoria el resultado (el interprete se lo asigna al resource de resultado de consulta mysql), al guardar los datos de cada fila en un array estas duplicando la memoria necesaria. Además el array se lo pasas al metodo, y a menos que se pase por referencia estarías triplicando la memoria necesaria. Si tu script funciona bien, probablemente no lo hayas notado, pero es posible que con un query que retorne más tuplas tu script arroje el error fatal por exceso de memoria. Se me ocurre que una solución óptima pasa por ver si con otros métodos (o con el mismo) es posible agregar la informacion tupla por tupla asi como se ase comunmente con el ciclo que te puse, donde por cada iteracion se imprime por pantalla una fila de tabla html.

* Si existe alguna forma para pasar los datos tupla por tupla, entonces tambien

* Para otros, la solucion óptima pasa por encontrar un número adecuado de tuplas retornadas por query usando LIMIT en las consultas.

* Probablemente le estoy buscando la quinta pata al gato, pero siempre lo hago cuando tengo la impresión que una solución no es óptima.

* Con óptimo me refiero a lograr un punto de equilibrio donde el uso de memoria, tiempo de ejecución y lineas de código sean mínimos.
__________________
Blog | Tecnosquad
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:21.