Bonjour,
Il y a 3 manières de faire cela :
1/ Dans la
requête SQL : ajotuer une clause ORDER BY
Doc officielle pour MySQL :
http://dev.mysql.com/doc/refman/5.0/fr/select.html
Les + :
- permet de trier l'ensemble des résultats, indépendamment de la "page" (généralement obtenue par une clause LIMIT) courante
Les - :
- la requête SQL devient variable en fonction du champ de tri, il y a donc du code un (tout petit peu) "compliqué" à rajouter : form HTML ou paramètres GET, ...
- Le tri est limité aux champs de la requête
- les performances peuvent chuter sur un grand nombre de lignes et/ou une requête complexe (sous-requêtes, jointures, ...)
2/ Dans le code PHP : voir les fonctions array_sort, ...
Les + :
- performant sur un petit (<1000) nombre de lignes,
- Le tri peut être très complexe (expressions mathématiques, voire données externes, ...)
Les - :
- Idem 1/
- ne permet généralement de trier QUE les résultats de la page courante
3/ En Javascript (donc côté client) : de nombreuses librairies permettent cela nativement, voir par exemple
http://www.kryogenix.org/code/browser/sorttable/
Les + :
- TRES simple à implémenter, généralement une ligne de JS dans le code suffit
- le tri est fait par le navigeur du client, donc pas d'impact de performances côté serveur (charge, ...)
- très convivial car la page se trie "instantanément", sans devoir la recharger
Les - :
- Sauf à utiliser un framework incluant des "datasources" (jquery, YUI, ...), ne trie toujours QUE les résultats affichés
Donc la bonne solution dépend de tes besoins (notion de pages ? tris complexes ?, ... ) ,et parfois, une combinaison de 2 des 3 "techniques" peut être utile !
(par exemple, tri serveur en SQL ET local en JS pour les utilisateurs avancés qui désirent pouvoir retrier les choses à leur gré)
Bon courage