Ver Mensaje Individual
  #14 (permalink)  
Antiguo 02/03/2014, 22:56
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: programacion de tabla con php

1) Con respeto y sin "trollear amablemente" voy a responder tu mensaje, por partes:

Cita:
No sé a que te refieres con prolijo:
prolijo, ja.

(Del lat. prolīxus).

1. adj. Largo, dilatado con exceso.

2. adj. Cuidadoso o esmerado.

3. adj. Impertinente, pesado, molesto.
No metas a la RAE ni a los disccionarios en esto, todos mancillamos a diario el idioma español con los nombres que le damos a nuestras variables, una cosa prolija es algo que puede ser visto y entendido de forma comoda sin sobresaltos o esfuerzos extras.


Cita:
Yo en mi post intenté ser lo más claro posible, usando los botones de código php que ofrece el editor de mensajes del foro para insertar el contenido php.
Si leiste lo que puse, dije a tu post no aplica ya que vos si explicas prolijamente, el comentario venia por el mensaje original de esta publicacion.

Cita:
Hablas de que los links se ponen mal, o que no usa la etiqueta apropiada, pero no nos dices como es la etiqueta
El editor tiene un boton de un planeta con una cadena, si lo clikeas, pone un link.

Cita:
Has dado las mismas respuestas que dieron en mi post, no uses dreamweaver, lee tutoriales, bla bla, ¿no pensáis que si usamos dreamweaver es por algo? ¿por qué siempre nos mandáis leer tutoriales que no entendemos?
Si, el algo es que quieren tomar atajos, llegar a un destino de forma rapida sin recorrer el camino, saltearse los pasos intermedios, pero cuando el dreamweaver no hacer lo que esperan, preguntan, y las respuestas estan en los pasos que se saltearon, sus problemas no son dificiles, pero carecen de las bases minimas, por eso los mandamos a leer tutoriales, para que aprendan lo basico y puedan intentar lo avanzado.

Cita:
Puede que seamos estupidos, pero nunca os paráis a pensar que igual no instalamos php para aprender programación sino con otros fines, vease un foro, etc, etc. Es luego cuando nos encontramos con que necesitamos ayuda.
Eso esta claro, tus fines son hacer un sistema, pero sin saber programar es dificil de hacer, no importa, total tenes un ide que apretas dos botones y te muestra el resulado "en vivo" no parece ser tan dificil, pero cuando el ide no tiene el boton que haga lo que necesitas, pedis ayuda, y el problema se remite al mencionado en el parrafo anterior.

Cita:
no somos programadores, cuando intentamos buscar ayuda la gente nunca se pone a nuestro nivel y no nos ayudan, pretenden que nosotros nos pongamos al suyo mediante tutoriales etc, sin comprender que no tenemos esa pasión por programar ni ese nivel de comprensión en la materia.
Si yo te dijera que tengo en mi garage 15 monitores de tubo y un volante de bicicleta y quiero armar un simulador de vuelo casero y te pregunto ¿Como conecto mis monitores al mango de la bici para que anden? y aclaro que no se de electronica ni de domotica ¿vos que me dirias? seguramente que lea manuales y me informe mas sobre los componentes nesesarios o bien que contrate a alguien del area, una respuesta muy similar a la que os damos nosotros.

Cita:
P.D: No os toméis este mensaje como un ataque personal, sino como una forma de acercar posturas, nosotros queremos aprender, leemos tutoriales, la mayoría de las veces no los entendemos, e intentamos aprender preguntando aquí.
Por supuesto que no, solo no queria pasar por alto algunas cuestiones, espero tu tampoco te tomes a mal mis palabras.

2) Ahora si, con respecto al tema de la consulta hay tres soluciones, dos por SQL y otra por PHP, la de sql es un tema cuyas palabras clave son subconsultas o alias y la solucion de php se llama corte de control que es la que sugirio Heli0s

Viendo los extensos y redundantes sql que escribieron, no les vendria mal revisar la funcion IN de mysql.

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

Por alias seria algo asi:
Código MySQL:
Ver original
  1.     principal.pilotid,
  2.     indi1.accepted indi_1_accepted,
  3.     indi2.accepted indi_2_accepted,
  4.     indi3.accepted indi_3_accepted,
  5.     indi4.accepted indi_4_accepted,
  6.     indi5.accepted indi_5_accepted,
  7.     indi6.accepted indi_6_accepted
  8. FROM phpvms_pireps as principal
  9. INNER JOIN phpvms_pireps indi1 ON indi1.pilotid = principal.pilotid
  10. INNER JOIN phpvms_pireps indi2 ON indi2.pilotid = principal.pilotid
  11. INNER JOIN phpvms_pireps indi3 ON indi3.pilotid = principal.pilotid
  12. INNER JOIN phpvms_pireps indi4 ON indi4.pilotid = principal.pilotid
  13. INNER JOIN phpvms_pireps indi5 ON indi5.pilotid = principal.pilotid
  14. INNER JOIN phpvms_pireps indi6 ON indi6.pilotid = principal.pilotid
  15. indi1.flightnum = 'INDI-1'
  16. AND indi2.flightnum = 'INDI-2'
  17. AND indi3.flightnum = 'INDI-3'
  18. AND indi4.flightnum = 'INDI-4'
  19. AND indi5.flightnum = 'INDI-5'
  20. AND indi6.flightnum = 'INDI-6' 
  21. GROUP BY principal.flightnum, phpvms_pireps.pilotid
  22. ORDER BY phpvms_pireps.pilotid ASC, phpvms_pireps.flightnum ASC
  23. LIMIT 0 , 300

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. ?>

Como vez, te propongo 3 soluciones alternativas sin cambiar nada en la base de datos.

La pregunta es ¿Entendiste algo de alguno de los codigos? no si sabes copiarlos y pegarlos, si sabes que es lo que hacen y porque lo hacen?
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 02/03/2014 a las 23:07