par
Ryle » 25 oct. 2007, 11:13
Bah c'est un peu logique que le sens soit toujours le même :
si $_GET['ordre']=='support', alors $ordre sera toujours égal à 'support' et donc toujours un tri desc.
Déjà tu peux grandement simplifier l'écriture en utilisant la valeur passée en paramètre :
$ordre = (isset ($_GET['ordre']))? $_GET['ordre'] : 'id';
$sql = "SELECT ...
FROM prix_pao
ORDER BY ".mysql_real_escape_string($ordre)."_prix";
Une seule requête et un paramètre qui détermine l'ordre de tri, c'est quand même plus lisible.
Quant au sens de tri, bah le plus simple c'est un second paramètre qui viendra compléter la requête, par exemple :
<?php
if (isSet($_GET['sens']) && $_GET['sens'] == 'asc') // si un sens est spécifié on inverse pour le lien
$sens = 'desc';
else // sinon
$sens = 'asc';
?>
<a href="xxxx.php?ordre=support&sens=<?php echo $sens; ?>" > ... </a>
Et du côté de ta requête suffit de l'inclure (avec les tests qui vont bien au préalable) :
" ORDER BY ".mysql_real_escape_string($ordre)."_prix ".$_GET['sens'];