Foros del Web » Programando para Internet » PHP »

Problema con fpdf

Estas en el tema de Problema con fpdf en el foro de PHP en Foros del Web. Código PHP: <?php require( 'RUM.php' ); //Connect to your database include( "../../../controllers/conexion.php" ); //Select the Products you want to show in your PDF file $result = mysql_query ( "SELECT PROD_CODI, PROD_NOMB, UMED_CODI FROM CSTO_PROD" , $con ); $number_of_products  =  mysql_numrows ( $result ); ...
  #1 (permalink)  
Antiguo 31/08/2011, 14:16
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Problema con fpdf

Código PHP:
<?php
require('RUM.php');

//Connect to your database
include("../../../controllers/conexion.php");

//Select the Products you want to show in your PDF file
$result=mysql_query("SELECT PROD_CODI, PROD_NOMB, UMED_CODI FROM CSTO_PROD",$con);
$number_of_products mysql_numrows($result);

//Initialize the 3 columns and the total
$column_code "";
$column_name "";
$column_desc "";
$total 0;

//For each row, add the field to the corresponding column
while($row mysql_fetch_array($result))
{
    
$UMED_CODI  $row["PROD_CODI"];
    
$UMED_NOMB  $row["PROD_NOMB"];
    
$UMED_DESC  $row["UMED_CODI"];

    
$column_code $column_code.$UMED_CODI."\n";
    
$column_name $column_name.$UMED_NOMB."\n";
    
$column_desc $column_desc.$UMED_DESC."\n";
}
mysql_close();

//Create a new PDF file

$pdf=new RUM();

$pdf->AddPage();

//Fields Name position
$Y_Fields_Name_position 40;
//Table position, under Fields Name
$Y_Table_Position 46;

//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(232,232,232);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',12);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(20);
$pdf->Cell(20,6,'Codigo',1,0,'L',1);
$pdf->SetX(40);
$pdf->Cell(130,6,'Nombre',1,0,'L',1);
//$pdf->SetX(60);
//$pdf->Cell(40,6,'Descripcion',1,0,'L',1);
$pdf->Ln();

//Now show the 3 columns
$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
//$pdf->MultiCell(20,6,$column_code,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->MultiCell(130,6,$column_name,1);
//$pdf->SetY($Y_Table_Position);
//$pdf->SetX(60);
//$pdf->MultiCell(40,6,$column_desc,1);

//Create lines (boxes) for each ROW (Product)
//If you don't use the following code, you don't create the lines separating each row
$i 0;
$pdf->SetY($Y_Table_Position);
while (
$i $number_of_products)
{
    
$pdf->SetX(20);
    
$pdf->MultiCell(170,6,'',1);
    
$i $i +1;
}
$pdf->Output();
?>
no entiendo porque primero me reporta el codigo, luego nombre.
tengo 1500 productos; pero primero me reporta los 1500 codigos, luego abajo de estos me reporta los 1500 nombres y asi, no todo en una sola fila. eso es lo raro. alguien q me ayude?
  #2 (permalink)  
Antiguo 31/08/2011, 14:20
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Problema con fpdf

En vez de poner con MultiCell

Código:
//Now show the 3 columns
$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
$pdf->MultiCell(20,6,$column_code,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->MultiCell(20,6,$column_name,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(60);
$pdf->MultiCell(40,6,$column_desc,1);
Usa solo Cell.
__________________
Aprendiendo!!!
  #3 (permalink)  
Antiguo 31/08/2011, 14:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problema con fpdf

Si pongo solo Cell, me sale todo en una linea, osea las 1500 en una linea. y eso no es nada correcto, al parecer mi error se origina cuando excede de 1 hoja.

:S
  #4 (permalink)  
Antiguo 31/08/2011, 14:29
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Problema con fpdf

Despues que imprimas las tres columnas para cada registro tienes que imprimir un $pdf->Ln(); un salto de linea para que se imprima en otro fila el siguiente registro.
__________________
Aprendiendo!!!
  #5 (permalink)  
Antiguo 31/08/2011, 14:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problema con fpdf

Si eso mismo hago, pero igual todas las 1000 salen en una sola linea alli una ensima de otra, y eso q pongo

$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
$pdf->Cell(20,6,$column_code,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->Cell(20,6,$column_name,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(60);
$pdf->Cell(40,6,$column_desc,1);
$pdf->Ln();
  #6 (permalink)  
Antiguo 31/08/2011, 14:42
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problema con fpdf

el problema radica en que las estas concatenando todas juntas.
Código PHP:
    $column_code $column_code.$UMED_CODI."\n";
    
$column_name $column_name.$UMED_NOMB."\n"
En el código que muestras estas concatenando TODOS los valores de código en $column_code, luego TODOS los de nombre en $column_name. Es logico que al imprimir te va a imprimir primero todos los códigos y luego todos los nombres!
Lo que deberías hacer es crear un while, que en cada vuelta imprima una fila con los datos que tu quieres

Código PHP:
while($row mysql_fetch_array($result))
{
/*
    imprimir $row["PROD_CODI"];
    mover X
    imprimir $row["PROD_NOMB"];
    moverme al X inicial
    aumentar Y
*/

espero haberte sido de ayuda
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #7 (permalink)  
Antiguo 31/08/2011, 14:58
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problema con fpdf

Si asi lo hago, si te daras cuenta en la primera publicacion donde esta todo mi codigo, uso el while.

Pero igual no funciona ...

tengo otro reporte donde no pasa de 1 hoja y reporta normal y todo bien, el problema creo q es cuando sobrepasa 1 hoja
  #8 (permalink)  
Antiguo 31/08/2011, 15:04
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problema con fpdf

Cita:
Iniciado por dante14 Ver Mensaje
Si asi lo hago, si te daras cuenta en la primera publicacion donde esta todo mi codigo, uso el while.

Pero igual no funciona ...

tengo otro reporte donde no pasa de 1 hoja y reporta normal y todo bien, el problema creo q es cuando sobrepasa 1 hoja
No lo haces asi, en tu while lo que haces es Juntar todo y luego imprimes.

Lo que te digo yo es que imprimas uno a uno
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #9 (permalink)  
Antiguo 31/08/2011, 15:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problema con fpdf

Supuestamente abajo hago creo eso no ? ... le doy el X y Y. o quieres q pase

$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
$pdf->Cell(20,6,$column_code,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->Cell(20,6,$column_name,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(60);
$pdf->Cell(40,6,$column_desc,1);
$pdf->Ln();

todo ese codigo arriba, xq creo q eso es lo que arma las lineas no ?
  #10 (permalink)  
Antiguo 31/08/2011, 15:29
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problema con fpdf

Cita:
Iniciado por dante14 Ver Mensaje
Supuestamente abajo hago creo eso no ? ... le doy el X y Y. o quieres q pase

$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
$pdf->Cell(20,6,$column_code,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->Cell(20,6,$column_name,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(60);
$pdf->Cell(40,6,$column_desc,1);
$pdf->Ln();

todo ese codigo arriba, xq creo q eso es lo que arma las lineas no ?
Justamente NO, abajo imprimes todo lo que juntaste. Por ejemplo

Código PHP:
$pdf->Cell(20,6,$column_code,1); 
$colum_code no tiene un codigo tiene todos los codigos que fuiste concatenando, es lógico que los imprima todos juntos, si es el valor que contiene la variable!

mira una prueba de escritorio sencilla, traigo de la base de datos 5 codigos
12,45,12,67,1 en la primera vuelta del while $colum_code="12"
en la segunda vuelta $colum_code="12\n45"
en la tercera $colum_code="12\n45\n12"...

Y asi sucesivamente, no puedes juntarlos y despues esperar que al imprimirlos, por ponerles un \n se van a formatear correctamente.

Como te digo, es dentro del while donde tienes que tener tu logica

Código PHP:
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
$pdf->Cell(20,6,$column_code,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->Cell(20,6,$column_name,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(60);
$pdf->Cell(40,6,$column_desc,1);
$pdf->Ln(); 
(obviamente necesitara unos cambios)
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #11 (permalink)  
Antiguo 31/08/2011, 16:24
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problema con fpdf

Sinceramente no te entiendo, ya que como te escribo antes me funciona correctamente y me formatea correctamente las filas asi como esta, el problema es al pasar a la siguiente pagina. y lo del while lo veo correcto o como podria ser?
  #12 (permalink)  
Antiguo 31/08/2011, 16:31
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problema con fpdf

Estas concatenando todo en dos variables y luego imprimiendolas, el uso que le puedes dar a esas variables es limitado. No puedes determinar cuando entran o no en la pagina.

Nunca podras hacerlo de la forma que lo planteas, tienes que necesariamente imprimir una a una cada fila. Y NO 2 columnas enormes con 1500 datos cada una
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Etiquetas: fpdf, mysql, sql
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 18:42.