Bonjour,
Pour un affichage de produits j'utilisais un classement alphabétique classique en appelant:
SELECT * FROM produits WHERE sous_famille = '$type_famille' ORDER BY nom_pdt LIMIT ".$_GET['debut'].','.$nb_affichage_par_page;
(où $_GET['debut'].','.$nb_affichage_par_page est une barre de pagination)
Utilisé ainsi, l'affichage par ordre alphabétique se fait bien donc...
MAIS pour pouvoir modifier cet ordre (alpha. inversé, du - cher au + cher et inversement), j'ai mis en place une liste déroulante
<select name="tri">
<option value=""></option>
<option value="abc">de A à Z (par défaut)</option>
<option value="cba">de Z à A</option>
<option value="prix-">du - cher au + cher</option>
<option value="prix+">du + cher au - cher</option>
</select>
Je récupère $_POST issu de cette liste et je la passe à la moulinette d'un switch:
switch ($tri){
case "abc":
$ordre = "nom_pdt ASC";
break;
case "cba":
$ordre = "nom_pdt DESC";
break;
case "prix-":
$ordre = "prix_pdt ASC";
break;
case "prix+":
$ordre = "prix_pdt DESC";
break;
default:
$ordre = "nom_pdt ASC";
break;
}
Jusque là pas de problème.
Ma commande sql devient alors:
"SELECT * FROM produits WHERE sous_famille = '$type_famille' ORDER BY '$ordre' LIMIT ".$_GET['debut'].','.$nb_affichage_par_page;
Et là est le problème:
Pas d'affichage en fonction de la demande, et par défaut: pas d'affichage alphanumérique, mais par id croissant.
NB: Si je fais un echo de ma commande sql, l'ordre de tri est bien conforme à la demande
Auriez vous une idée du pourquoi l'interprétation de la commande ne se fait pas et une piste pour arriver à mes fins ?
D'avance merci.