Ver Mensaje Individual
  #19 (permalink)  
Antiguo 08/03/2014, 05:57
spark21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: programacion de tabla con php

Cita:
Iniciado por NSD Ver Mensaje
1)
Por sql, con subconsultas seria algo asi:

Código MySQL:
Ver original
  1.     principal.pilotid,
  2.     ( SELECT indi1.accepted FROM phpvms_pireps indi1 WHERE indi1.pilotid = principal.pilotid AND indi1.flightnum = 'INDI-1' ) indi_1_accepted,
  3. ( SELECT indi2.accepted FROM phpvms_pireps indi2 WHERE indi2.pilotid = principal.pilotid AND indi2.flightnum = 'INDI-2' ) indi_2_accepted,
  4. ( SELECT indi3.accepted FROM phpvms_pireps indi3 WHERE indi3.pilotid = principal.pilotid AND indi3.flightnum = 'INDI-3' ) indi_3_accepted,
  5. ( SELECT indi4.accepted FROM phpvms_pireps indi4 WHERE indi4.pilotid = principal.pilotid AND indi4.flightnum = 'INDI-4' ) indi_4_accepted,
  6. ( SELECT indi5.accepted FROM phpvms_pireps indi5 WHERE indi5.pilotid = principal.pilotid AND indi5.flightnum = 'INDI-5' ) indi_5_accepted,
  7. ( SELECT indi6.accepted FROM phpvms_pireps indi6 WHERE indi6.pilotid = principal.pilotid AND indi6.flightnum = 'INDI-6' ) indi_6_accepted
  8. FROM phpvms_pireps as principal
  9. GROUP BY principal.flightnum, phpvms_pireps.pilotid
  10. ORDER BY phpvms_pireps.pilotid ASC, phpvms_pireps.flightnum ASC
  11. LIMIT 0 , 300
Este me da error: Unknown column 'phpvms_pireps.pilotid' in 'order clause' y Unknown column 'phpvms_pireps.flightnum' in 'order clause' lo he solucionado poniendo esto:
Código SQL:
Ver original
  1. GROUP BY principal.pilotid, principal.flightnum
  2.     ORDER BY principal.pilotid ASC, principal.flightnum ASC
Después me devuelve este error:
Subquery returns more than 1 row, creo que por lo que comentaste de IN, estoy sigiendo estos pasos: http://www.antoniopol.es/2012/11/como-solucionar-el-error-subquery-returns-more-than-1-row-en-mysql/

Cita:
y por corte de control seria algo asi:
Código PHP:
Ver original
  1. <?php
  2. $row = '';
  3. $piloto = 0;
  4. while($row_tabladetours = mysql_fetch_assoc($tabladetours))
  5. {
  6.     if($piloto != $row_tabladetours['pilotid'])
  7.     {
  8.         if($row)
  9.         {
  10.             $row .= '</tr>';
  11.             echo($row);
  12.         } else
  13.         {  
  14.         }
  15.         $piloto = $row_tabladetours['pilotid'];
  16.         $row = '<tr><td bgcolor="#FFFFFF">'.$row_tabladetours['pilotid'].'</td>';  
  17.     }
  18.    
  19.     $row .= '<td bgcolor="#FFFFFF">'.$row_tabladetours['flightnum'].': '.($row_tabladetours['accepted'] ? '<img src="http://argavirtual.com/lib/skins/templatemo_254_agency/images/vistobueno.gif">' : '<img src="http://argavirtual.com/lib/skins/templatemo_254_agency/images/vistomalo.gif">').'</td>';
  20. }
  21. if($row)
  22. {
  23.     $row .= '</tr>';
  24.     echo($row);
  25. }
  26. ?>
Accepted devuelve el valor 0, 1 o 2, que significan 0=no aceptado todavía; 1=aceptado; 2=Rechazado, en la solución por corte de control siempre me aparece el visto bueno, si quiero que cuando el valor sea distinto a 1 aparezca vistomalo.gif ¿qué función tengo que usar? se me ocurre algo como if not... echo... pero no sé muy bien.