Trier tableau PHP
Résolu
Jérôme
-
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un tableau en PHP composé de trois colonnes (titre, message, ordre).
Ses données s'ajoutent à partir d'un formulaire (et sont stockées dans une BDD)
J'aimerais que lorsque je clique sur le titre d'une colonne, celle-ci se classe automatiquement par ordre croissant. Puis lorsque je re-clique, elle se classe par ordre décroissant et ainsi de suite...
Il me semble pour cela que je dois utiliser dans mon URL quelque chose de ce type :
index.php?sort=titre&priorite=desc
Cependant je n'arrive pas à la mettre en oeuvre.
PS: Je précise que lorsque je clique sur un titre, j'aimerais que toutes les autres colonnes s'adaptent au tri. Pas que les données soient mélangées.
Merci d'avance,
Jérôme Dietrich
J'ai un tableau en PHP composé de trois colonnes (titre, message, ordre).
Ses données s'ajoutent à partir d'un formulaire (et sont stockées dans une BDD)
J'aimerais que lorsque je clique sur le titre d'une colonne, celle-ci se classe automatiquement par ordre croissant. Puis lorsque je re-clique, elle se classe par ordre décroissant et ainsi de suite...
Il me semble pour cela que je dois utiliser dans mon URL quelque chose de ce type :
index.php?sort=titre&priorite=desc
Cependant je n'arrive pas à la mettre en oeuvre.
PS: Je précise que lorsque je clique sur un titre, j'aimerais que toutes les autres colonnes s'adaptent au tri. Pas que les données soient mélangées.
Merci d'avance,
Jérôme Dietrich
A voir également:
- Trier tableau PHP
- Trier un tableau excel - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
3 réponses
salut,
Les paramètres que tu passes dans l'URL n'agissent pas seuls sur le tri. Il faut les récupérer via les variables $_GET['sort'] et $_GET['priorite'].
Ensuite, dans ton code, en fonction de ces paramètres, il faut adapter ta requete SQL en fonction de ces paramètres .... avec un "order by".
Attention aux injections SQL si tu passes directement le contenu de la variable dans ta requette SQL !
Les paramètres que tu passes dans l'URL n'agissent pas seuls sur le tri. Il faut les récupérer via les variables $_GET['sort'] et $_GET['priorite'].
Ensuite, dans ton code, en fonction de ces paramètres, il faut adapter ta requete SQL en fonction de ces paramètres .... avec un "order by".
Attention aux injections SQL si tu passes directement le contenu de la variable dans ta requette SQL !
//Mise en place du tableau echo '<br/><table rules="all">'; echo '<thead><tr><th><a href="index.php?tri=titre&ordre=DESC">Titre</a></th><th><a href="index.php?tri=priorite&ordre=DESC">Priorité</a></th><th><a href="index.php?ferme=titre&ordre=DESC">Fermée ?</a></th></tr></thead>';
=>
echo '<br/><table rules="all">'; echo '<thead><tr><th><a href="index.php?tri=titre&ordre=DESC">Titre</a></th><th><a href="index.php?tri=priorite&ordre='; if (isset($ordre) and $ordre == "ASC") echo 'DESC'; else echo 'ASC"; echo '">Priorité</a></th><th><a href="index.php?ferme=titre&ordre=DESC">Fermée ?</a></th></tr></thead>';
$reponse = $base->query("SELECT * FROM gestionnaire ORDER BY $tri $ordre");
t'as encore une belle faille de sécurité je pense...
si on prend ca comme parametres:
index.php?priorite=desc&sort=titre;delete from gestionnaire;
a mon avis ca va faire des étincelles !!!! (a tester.. si t'as pas de données importantes dans la table gestionnaire ....
t'as encore une belle faille de sécurité je pense...
si on prend ca comme parametres:
index.php?priorite=desc&sort=titre;delete from gestionnaire;
a mon avis ca va faire des étincelles !!!! (a tester.. si t'as pas de données importantes dans la table gestionnaire ....
En effet en suivant tes conseils je viens de réussir ce que je voulais. Mais il me reste une petite question : comment faire pour que quand je clique sur un titre de colonne, celle-ci se classe alternativement en ASC et en DESC ?
Voici l'extrait de mon code :