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