Trier selon une colonne (résolu)

Trier selon une colonne (résolu) - PHP - Programmation

Marsh Posté le 22-07-2008 à 11:48:19    

J'affiche le résultat d'une requête dans un tableau qui a, bien sûr, plusieurs colonnes. L'ordre d'affichage est bien naturellement celui qui est mis dans la requête par la clause ORDER BY. (par exemple Nom et Prénom)
Je voudrais trier cet affichage selon l'ordre d'une des colonnes de mon tableau, en cliquant simplement sur l'étiquette d'en tête de la colonne. (par exemple code postal)
Merci de me donner un début de solution.


Message édité par speedy155 le 22-07-2008 à 14:58:25
Reply

Marsh Posté le 22-07-2008 à 11:48:19   

Reply

Marsh Posté le 22-07-2008 à 11:52:08    

a priori, le nom de la colonne de tableau doit pointer vers la page elle meme avec un ?ordre=[nom_de_colonne].
 
et dans ton script php, tu récupères $_GET['ordre'] pour l'insérer dans ta requete sql.
 
du genre : $sql = "select * from matable order by ".$_GET['ordre']." asc"; (à sécuriser)


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 22-07-2008 à 11:54:35    

Logique et clair. Je vais essayer. Merci

Reply

Marsh Posté le 22-07-2008 à 12:37:02    

en protégeant tes variables bien sûr ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 22-07-2008 à 12:45:55    

oeuf curse :)


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 22-07-2008 à 13:02:53    

Merci les gars ! Ca fonctionne exactement comme prévu !
 
Il me faudra revenir sur la protection des variables, mais je crois que c'est un autre sujet et je vais d'abord aller voir les FAQ... à moins que vous ayez quelque chose de prèt sur le feu ...
Comment fait-on pour déclarer le sujet clos ?

Reply

Marsh Posté le 22-07-2008 à 14:54:38    

tu édites le premier message de ce topic: tu ajoutes (résolu) à la FIN du titre.


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 22-07-2008 à 14:54:45    

dans ton php avant de creer ta requete:

 
Code :
  1. if(in_array($_GET['ordre'], array('champ1','champ2'...))
  2. {
  3.     $champ_tri = $_GET['ordre'];
  4. }
  5. else
  6. {
  7.     $champ_tri = 'champ1';   
  8. }
  9. $sql = "select * from matable order by ".$champ_tri." asc";


Sinon si quelqu'un modifie directement le nom du champ de tri dans l'ul, tu vas te retrouver avec une erreur sql car la colonne ne sera pas connue.


Message édité par Alisteroid le 22-07-2008 à 14:55:45
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed