Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/01/2004, 22:05
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
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.