Foros del Web » Programando para Internet » PHP »

mostrar los datos de una consulta en factura en pdf

Estas en el tema de mostrar los datos de una consulta en factura en pdf en el foro de PHP en Foros del Web. hola muy buenas a todos muxas gracias a la gente que dedica parte de su tiempo a resolvernos las dudas. quiero generar una factura en ...
  #1 (permalink)  
Antiguo 23/02/2014, 08:08
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 10 meses
Puntos: 0
mostrar los datos de una consulta en factura en pdf

hola muy buenas a todos
muxas gracias a la gente que dedica parte de su tiempo a resolvernos las dudas.
quiero generar una factura en pdf de los pedidos de los clientes en un fichero pdf
lo que pasa si un cliente tiene más de un pedido no llego a generar los pedidos enteros o sea si tiene más de uno (dos o 3 pedidos) me muestra solamente uno en el cuadro del pdf
sabiendo que tengo la siguiente estructura de la base de datos:
orders tiene los siguientes campos(orderid(PK),customerid,etc... cito solamente los campos importantes).
orders_items tiene los siguientes campos(orderitems(PK),orderid(FK), isbn item_price,quantity)
articulos(isbn(PK),author title,catid,price,description,imagen)
os adjunto parte del codigo donde tengo que mostrar los datos en pdf:
Código PHP:
   define('FPDF_FONTPATH','font/');
    require(
'./fpdf/mysql_table.php');
    include(
"./fpdf/comunes.php");
    include (
"./funciones/fechas.php");
    
$c=mysql_pconnect("localhost""""");
    if (!
$c)
      die( 
'Error'mysql_error() );
    
mysql_select_db("bd",$c) or die(mysql_error());

    
$codfactura=$_POST["codcliente"];
   
    
$pdf=new PDF();
    
$pdf->Open();
    
$pdf->AddPage();
    
$pdf->Ln(10);

     
//ahora mostramos las lneas de la factura
    
$pdf->Ln(10);
    
$pdf->Cell(1);

    
$pdf->SetFillColor(255,191,116);
    
$pdf->SetTextColor(0);
    
$pdf->SetDrawColor(0,0,0);
    
$pdf->SetLineWidth(.2);
    
$pdf->SetFont('Arial','B',8);
    

    
    
$pdf->Cell(40,4,"Autor",1,0,'C',1);
    
$pdf->Cell(80,4,"Titulo",1,0,'C',1);
    
$pdf->Cell(20,4,"Precio",1,0,'C',1);
    
$pdf->Cell(15,4,"Cantidad",1,0,'C',1);

    
$pdf->Ln(4);


    
$pdf->SetFillColor(224,235,255);
    
$pdf->SetTextColor(0);
    
$pdf->SetDrawColor(0,0,0);
    
$pdf->SetLineWidth(.2);
    
$pdf->SetFont('Arial','',8);
    

    
$consulta1 "Select * from orders,order_items where orders.orderid=order_items.orderid and orders.customerid='$codfactura'";
   
    
$r=mysql_query($consulta1,$c) or die (mysql_error());
    
    
//si hago en echo del numero de filas se me muestra el numero correcto o sea 
    // si un cliente tiene un pedido sale 1 si tiene más de uno me muestra el numero 
   // correspondiente
    
$numero_filas mysql_num_rows($r);

    

    
$codlibro=mysql_result($r,0,"isbn");

    
$contador=1;
    
$lineas=1;

    
/* 
      supuestamente en este for recorro los campos devueltos en la base de datos
       para ir mostrándolos en el cuadro de la factura.
    */
    
for($i=1;$i<=$numero_filas;$i++)
    {
         
$pdf->Cell(1);

         
$codlibro=mysql_result($r,0,"isbn") or die (mysql_error());
         
$sel_libro="SELECT * FROM articulos WHERE isbn='$codlibro'";

         
$rs_libro=mysql_query($sel_libro) or die (mysql_error());

         
$pdf->Cell(40,4,mysql_result($rs_libro,0,"author"),'LR',0,'L');

         
$acotado =substr(mysql_result($rs_libro,0,"title"), 0,40);

         
$pdf->Cell(80,4,$acotado,'LR',0,'L');

         
$precio2number_format(mysql_result($rs_libro,0,"price"),2,",",".");
         
$pdf->Cell(20,4,$precio2,'LR',0,'R');

         
$pdf->Cell(15,4,mysql_result($r,0,"quantity"),'LR',0,'C');


    }

     while (
$contador<35)
    {
      
$pdf->Cell(1);
      
$pdf->Cell(40,4,"",'LR',0,'C');
      
$pdf->Cell(80,4,"",'LR',0,'C');
      
$pdf->Cell(20,4,"",'LR',0,'C');
      
$pdf->Cell(15,4,"",'LR',0,'C');

      
$pdf->Ln(4);
      
$contador=$contador +1;
    }


      
$pdf->Cell(1);
      
$pdf->Cell(40,4,"",'LRB',0,'C');
      
$pdf->Cell(80,4,"",'LRB',0,'C');
      
$pdf->Cell(20,4,"",'LRB',0,'C');
      
$pdf->Cell(15,4,"",'LRB',0,'C');
      
$pdf->Ln(4);

     
$pdf->Output();
     
header('Content-type: application/pdf'); 
espero vuestra ayuda y vuestros consejos.
muchisima gracias de antemano
sal2
  #2 (permalink)  
Antiguo 23/02/2014, 18:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: mostrar los datos de una consulta en factura en pdf

No es necesario que recorras los resultados por número de filas, es tan fácil como:

Código PHP:
Ver original
  1. $consulta1 = "Select * from orders,order_items where orders.orderid=order_items.orderid and orders.customerid='$codfactura'";
  2.     $r=mysql_query($consulta1,$c) or die (mysql_error());
  3.  
  4.     // En vez de contar las filas (porque no haces nada con ellas)
  5.     // Recorre directamente los resultados
  6.     while($row = mysql_fetch_assoc($r)) {
  7.          $codlibro = $row['isbn'];
  8.          // Aquí haces la consulta para leer el libro
  9.          // Y actualizas el PDF
  10.     }

Por cierto, la librería mysql es obsoleta y va a desaparecer en Php 5.5, por lo que deberías cambiar a mysqli o PDO.

También, no veo necesario hacer dos consultas si puedes hacer todo solo con JOIN, ejemplo:

Código SQL:
Ver original
  1. SELECT o.*, oi.*, a.* FROM orders o
  2. JOIN order_items oi ON o.orderid = oi.orderid
  3. JOIN articulos a ON oi.isbn = a.isbn
  4. WHERE o.customerid = 'xxxx'

o = Alias para la tabla orders
oi = Alias para la tabla order_items
a = Alias para la tabla articulos
'xxxx' = Reemplázalo por el valor adecuado

Con esta consulta será suficiente para completar el ejemplo que puse al principio, todos los datos estarán en $row['nombre_de_campo']

P.D. Parece que el problema original es que no estás avanzando el apuntador para acceder al juego de resultados y esto es causado por usar mysql_result() en lugar de mysql_fetch_****() que lee la fila actual y avanza el apuntador automáticamente
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: factura, mysql, pdf, select, 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 00:46.