Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/05/2014, 02:23
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: While dentro de otro while

Es mejor la sintaxis JOIN ON

Código MySQL:
Ver original
  1. SELECT parties.idparties,
  2.        parties.anfitriona,
  3.        parties.fecha,
  4.        papeletas.idparties,
  5.        papeletas.idpapeleta,
  6.        papeleta_articulos.idparties,
  7.        papeleta_articulos.idpapeleta_a,
  8.        papeleta_articulos.cantidad,
  9.        papeleta_articulos.producto,
  10.        papeleta_articulos.precio,
  11.        papeleta_articulos.cantidad * papeleta_articulos.precio subtotal
  12. FROM parties INNER JOIN papeletas ON parties.idparties = papeletas.idparties
  13.              INNER JOIN papeleta_articulos ON papeletas.idpapeleta = papeleta_articulos.idpapeleta_a
  14. WHERE parties.idparties = '$idparties'";

No tiene ningun sentido hacer esas dos consultas dan los mismos datos. Imagina lo siguiente.


Código PHP:
Ver original
  1. //No hago la primera query
  2.  
  3. $query1="SELECT parties.idparties,
  4.       parties.anfitriona,
  5.       parties.fecha,
  6.       papeletas.idparties,
  7.       papeletas.idpapeleta,
  8.       papeleta_articulos.idparties,
  9.       papeleta_articulos.idpapeleta_a,
  10.       papeleta_articulos.cantidad,
  11.       papeleta_articulos.producto,
  12.       papeleta_articulos.precio,
  13.       papeleta_articulos.cantidad * papeleta_articulos.precio subtotal
  14. FROM parties INNER JOIN papeletas ON parties.idparties = papeletas.idparties
  15.             INNER JOIN papeleta_articulos ON papeletas.idpapeleta = papeleta_articulos.idpapeleta_a
  16. WHERE parties.idparties = '$idparties'";
  17. $resultado1=mysql_query($query1);
  18.  
  19. $j=0; //Creo una variable auxiliar.
  20. while($row=mysql_fetch_array($resultado1)){
  21.     if($j==0){
  22.         //Muestro los datos de la cabecera de la papeleta
  23.         //Solo cuando $j es 0 cero.
  24.     }
  25.     //Muestro los datos del producto
  26.    
  27.  
  28.     //IMPORTANTE
  29.     $j++;
  30.     //Incremento $j para que en el siguiente ciclo del bucle ya no sea 0
  31. }

Deberías leer sobre normalización de bbdd, te faltan tablas (ciudades,clientes,productos), y sobra algún campo (subtotal, deberías eliminarlo para usar mi query).
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/05/2014 a las 02:33