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. Buenas, tengo hecha en Dreamweaver una página maestra, donde aparecen todos los registros que cumplen un criterio de búsqueda de un formulario de la página ...
  #1 (permalink)  
Antiguo 25/06/2008, 05:55
 
Fecha de Ingreso: mayo-2008
Mensajes: 42
Antigüedad: 15 años, 11 meses
Puntos: 0
ordenar por...

Buenas, tengo hecha en Dreamweaver una página maestra, donde aparecen todos los registros que cumplen un criterio de búsqueda de un formulario de la página anterior.

Esta página consiste en una tabla con 5 columnas, y en la cabecera de cada columna aparece el nombre del campo, y debajo todos los campos de los registros.

Mi pregunta es la siguiente: ¿hay alguna manera de que, al pulsar sobre los nombres de los campos de la cabecera, la tabla se ordene según el campo que he pulsado?

Lo he visto muchas veces por ahi, pero no se me ocurre manera de implementarlo (en php, por supuesto)

Saludos
  #2 (permalink)  
Antiguo 25/06/2008, 06:28
 
Fecha de Ingreso: agosto-2007
Mensajes: 25
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: ordenar por...

Buenas,

No se que nivel de php tendrás. Te explico por encima la idea que se podría tener y si ves que no sabrías pasarlo a código me lo comentas y te ayudo.

Una posible solución podría ser:


En la url por parametro tenemos que pasarle el método de ordenación.


¿Cómo le pasamos el parámetro?

Tenemos que crear un enlace de cada campo de la cabecera. Por ejemplo:

NOMBRE: Un enlace a la misma página pasandole que lo que queremos hacer es ordenar por nombre.
<a href="index.php?ord=nombre">NOMBRE</a>
<a href="index.php?ord=apellidos">APELLIDOS</a>

Por defecto al abrir el listado vamos a dejarlo ordenado por el primer campo (NOMBRE).

switch($_REQUEST['ord']){
case 'nombre':
$ordenacion="NOMBRE"; // Nombre del Campo en la Base de Datos
break;
case 'apellidos':
$ordenacion="APELLIDOS"; // Nombre del Campo en la Base de Datos
break;
default:
// Código error por no haberle pasado el parametro de ordenación.
break;
}


// Aqui ponemos la consulta SQL que tenías añadiendole el ORDER BY $ordenacion
// que en $ordenacion tenemos el nombre del campo de la tabla por el que queremos ordenar.


Espero no haberte liado con esta explicación. Si tienes cualquier duda pregunta que te la resuelvo.

Saludos.
  #3 (permalink)  
Antiguo 25/06/2008, 07:18
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: ordenar por...

Hola, pues yo lo hice asi:
Código PHP:
<?php
// en que orden mostrar las noticias
if(isset($_GET['order-by'])){
    
$orden $_GET['order-by'];
}else{
    
$orden "campo_por_defecto";
}
// en que modo, ASC o DESC
if(isset($_GET['modo']) && $_GET['modo'] == 'ASC'){
    
$modo "DESC";
}else{
    
$modo "ASC";
}

$sqlQuery =  mysql_query("SELECT * FROM tabla ORDER BY $orden $modo"$db_link) or die(mysql_error());
?>
<table>
    <tr>
        <th><a href="pagina.php?order-by=campo_1&amp;modo=<?php echo $modo?>">campo_1</a></th>
        <th><a href="pagina.php?order-by=campo_2&amp;modo=<?php echo $modo?>">campo_2</a></th>
    </tr>
</table>
saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 25/06/2008, 07:35
 
Fecha de Ingreso: agosto-2007
Mensajes: 25
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: ordenar por...

Así como dice rogertm funciona que es lo que yo he explicado pero traducido a código.

Saludos.
  #5 (permalink)  
Antiguo 25/06/2008, 08:17
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: ordenar por...

Si solo deseas mostrar la tabla con las diferentes ordenaciones.. podrias pasar los valores a un array y segun lo que desees, ordenas el array, ya que se puede hacer mas lenta si consultas a la DB cada vez que reordenes.
Bueno todo depende de lo que desees hacer.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #6 (permalink)  
Antiguo 26/06/2008, 10:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 42
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: ordenar por...

Ya lo he conseguido. He creado el enlace para cada de los campos de la cabecera, y luego he creado una variable que cambia de valor (ASC o DESC) según su valor inicial, pasado por un parámetro.

Gracias a todos
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 13:10.