Foros del Web » Programando para Internet » PHP »

Cambiar el Orden de datos ASC y DESC

Estas en el tema de Cambiar el Orden de datos ASC y DESC en el foro de PHP en Foros del Web. Hola amigos: Neceito que alguien me ayude en esto. Tengo una tabla que es resultado de una consulta a base de datos Mysql las columnas ...
  #1 (permalink)  
Antiguo 01/01/2004, 22:02
 
Fecha de Ingreso: diciembre-2003
Mensajes: 276
Antigüedad: 14 años
Puntos: 0
Cambiar el Orden de datos ASC y DESC

Hola amigos:

Neceito que alguien me ayude en esto.


Tengo una tabla que es resultado de una consulta a base de datos Mysql las columnas son:

Nombre Apellido Edad Dinero


Necesito que al consultar la primera vez este ordenado por nombre desde A---Z pero luego quiero que al presionar por ejemplo en Nombre se Ordenen desde Z---A, tambien que haga lo mismo al presionar cualquier titulo, esto es que al primer clic se ordene A----Z y al segundo clic en el mismo titulo se ordene desde Z---A entendiendo que el campo Dinero se ordenaran primero desde Menor-----Mayor y luego de Mayor---Menor

Espero que alguien me entienda Muchas Gracias y FEliz Año
  #2 (permalink)  
Antiguo 02/01/2004, 22:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. para que al "pulsar" sobre ese nombre .. tendrás que generar un link con una variable de control que indique el estado/orden de ordenamiento o bien un estado incial y que cambie alternativamente de estado.

Lo primero que tendrias que generar son links con esa variabel de control que indique el campo que ha de ordenar:

listado.php?campo=nombre

y en tu "listado.php" debes de capturar esa varible (campo) para componer el SQL que vas necesitar. Si te fijas que una sentencia SQL de ese tipo para un campo/orden sería algo tipo:

SELECT * FROM tabla WHERE ... condiciones si las tienes ... ORDER BY campo ASC

Sólo tienes que usar tus variables como la del nombre del campo a ordenar .. para que ordene por ese campo:

Código PHP:
$sql="SELECT * FROM tabla WHERE ... condiciones si las tienes ... ORDER BY ".$_GET['campo']." ASC"
Y ahora faltaría el "flip-flop" ("biestable") que alterne entre un estado y otro del modo de ordenamiento.

Para eso, .. debes definir un estado incial y propagar una variable más que definirá el modo de ordenamiento que ha de tomar:

Código PHP:
// definición del estado incial (de una llamada tipo: listado.php?campo=nombre)
if (empty($_GET['orden'])){
    
$orden="ASC";
} else {
    
$orden=$_GET['orden'];
}

// "flip-flop" (biestable)
if ($orden=="ASC"){
  
$orden_propaga="DESC";
} elseif (
$orden=="DESC") {
  
$orden_propaga="ASC";
} else {
  
// definición estado inicial por si "adulteran" el URL ...
  
$orden_propaga="ASC";

Y tus links serán tipo:

Código PHP:
<a href="listado.php?campo=nombre&orden=<? echo $orden_propaga ?>">Nombre</a>
Y la consulta completa a realizar a continuación:

Código PHP:
$sql="SELECT * FROM tabla WHERE ... condiciones si las tienes ... ORDER BY ".$_GET['campo']." ".$_GET['orden']."; 
(ojo con respetar los espacios entre instrucciones SQL ... son importantes; para Mysql no es lo mismo ORDER BYcampo que ORDER BY campo ... por ejemplo)

Ahora sólo te falta meter todo esto en la cocktelera y probar xD ...

Un saludo,

PD: Supongo que el código propuesto irá .. pero lo hice "al vuelo" así que ...
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 03/01/2004, 09:28
 
Fecha de Ingreso: diciembre-2003
Mensajes: 276
Antigüedad: 14 años
Puntos: 0
Gracias Cluster:

Me funciono re-bien con algunos cambios pero todo Bien Gracias.
__________________
--------------------
Solo se que nada se...
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:35.