Foros del Web » Programando para Internet » PHP »

Ordenar por

Estas en el tema de Ordenar por en el foro de PHP en Foros del Web. Tengo una consulta que me trae resultados de mi bd, ahora quiero ponerle un boton a cada columna para que el usuario pueda ordenar los ...
  #1 (permalink)  
Antiguo 07/07/2011, 11:01
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años
Puntos: 20
Ordenar por

Tengo una consulta que me trae resultados de mi bd, ahora quiero ponerle un boton a cada columna para que el usuario pueda ordenar los resultados, algo asi como un autofiltro, ahora la traigo ordenada por seminario pero quiero darle la opcion al usuario que lo organice el mismo

mi tabla es esta

Código PHP:
Ver original
  1. $consulta = "SELECT * FROM app_seminarios_nuevos WHERE abierto='1' ORDER BY seminario";
  2. $run_consulta = mysql_query($consulta) or die (mysql_error());
  3. echo "<table border='1' align='center'>";
  4. echo "<tr><td colspan='4'>A continuaci&oacute;n por favor marque el o los seminarios a los cuales quiere asistir, identifique primero el tema y luego la ciudad y fecha</td></tr>";
  5. echo "<tr ><td bgcolor='#000000'><strong><font color='#ffffff'></font></strong></td>";
  6. echo "<td bgcolor='#000000'><strong><font color='#ffffff'>Seminario</font></strong></td>";
  7. echo "<td bgcolor='#000000'><strong><font color='#ffffff'>Ciudad</font></strong></td>";
  8. echo "<td bgcolor='#000000'><strong><font color='#ffffff'>Fecha</font></strong></td></tr>";
  9. $i=0;
  10. while ($row = mysql_fetch_array($run_consulta)) {
  11.  
  12. $fecha77=$row['fecha'];
  13. $fe3 = explode("-", $fecha77);
  14. $ano3= $fe3[0];
  15. $mes3= $fe3[1];
  16. $dia3= $fe3[2];
  17.  
  18. switch ($mes3) {
  19.     case "01":
  20.     $mes3 = "Enero";
  21.     break;
  22.     case "02":
  23.     $mes3 = "Febrero";
  24.     break;
  25.     case "03":
  26.     $mes3 = "Marzo";
  27.     break;
  28.     case "04":
  29.     $mes3 = "Abril";
  30.     break;
  31.     case "05":
  32.     $mes3 = "Mayo";
  33.     break;
  34.     case "06":
  35.     $mes3 = "Junio";
  36.     break;
  37.     case "07":
  38.     $mes3 = "Julio";
  39.     break;
  40.     case "08":
  41.     $mes3 = "Agosto";
  42.     break;
  43.     case "09":
  44.     $mes3 = "Septiembre";
  45.     break;
  46.     case "10":
  47.     $mes3 = "Octubre";
  48.     break;
  49.     case "11":
  50.     $mes3 = "Noviembre";
  51.     break;
  52.     case "12":
  53.     $mes3 = "Diciembre";
  54.     break;
  55. }
  56.  
  57. $fecha47 = $dia3." de ".$mes3." de ".$ano3;
  58. ?>
  59. <form action='inscripciones.php' method='post'>
  60. <?php $i++; ?>
  61.  
  62. <tr style='background-color: <?php echo $color; ?>'><td><input type="checkbox" name="semis[]" value="<?php echo $row['codigo']; ?>"></td>
  63. <td ><?php echo $row['seminario']; ?></td>
  64. <td><?php echo $row['ciudad']; ?></td>
  65. <td><?php echo $fecha47 ?></td></tr>
__________________
Say no more.......
  #2 (permalink)  
Antiguo 07/07/2011, 11:03
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Ordenar por

Amigo eso no lo puedes lograr con PHP.... eso es tema de JavaScript te dejo una PAGINA de un plugin de JQuery que realiza lo que deseas.

De todas formas si ese no te gusta busca en Google acerca de Table Sorter que existen muchísimos mas.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 07/07/2011, 11:04
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años
Puntos: 20
Respuesta: Ordenar por

ok voy a buscar, gracias
__________________
Say no more.......
  #4 (permalink)  
Antiguo 07/07/2011, 12:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ordenar por

De hecho sí lo puedes hacer desde PHP, simplemente pon un link en el encabezado de tu tabla y pasa el parámetro de regreso a la pagina con el nombre de la columna y la insertas en el orden:
Código PHP:
Ver original
  1. if (isset($_GET['order'])) {
  2.        $order = $_GET['order'];
  3. } else {
  4.        $order = 'seminario';
  5. }
  6.  
  7. $sql = "SELECT ... ORDER BY $order";

Saludos.
  #5 (permalink)  
Antiguo 07/07/2011, 12:35
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Ordenar por

O.o si tenes razon GatorV pero a mi me parece "criterio personal" que es mejor con el plugin ya que este organiza todo sin necesidad de realizar mas consultas a la base de datos...

El sólito la organiza sin necesidad de interactuar con MySql

Pero si es posible como dice GatorV
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 07/07/2011, 12:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ordenar por

El problema es si estas paginando y solo estas mostrando un subset de datos, en ese caso solo se ordenaran esos y no todo el resultset.

Saludos.
  #7 (permalink)  
Antiguo 07/07/2011, 12:47
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Ordenar por

El plugin que le mostré tiene un paginador incluido... entonces no seria problema... solo es activarlo con un parámetro javascript

Y tiene para seleccionar cuantos resultados por pagina, y te muestra también el numero de pagina versus el total (1/15) de paginas y lo puedes cambiar de pagina si quieres por que es un campo texto, y también tiene las flechitas de atrás y adelante para pasar de pagina de una en una.

.tablesorterPager({container: $("#pager")});

Eso es lo único que necesita para activar el paginador.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #8 (permalink)  
Antiguo 07/07/2011, 12:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ordenar por

El problema del plugin, es imagina una tabla de 4,000 registros, bajar todo eso a un HTML tomará mucho tiempo, por eso siempre es mejor bajar un set de datos y ordenarlo en la base de datos.
  #9 (permalink)  
Antiguo 07/07/2011, 12:55
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Ordenar por

Mirándolo desde 4000 registros tenes razón...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: mysql, tabla
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 15:13.