Trier tableau PHP
Résolu
                                    
                        Jérôme                    
                                    -
                                     
Nabla's Messages postés 20731 Statut Contributeur -
        Nabla's Messages postés 20731 Statut Contributeur -
        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 :
if(isset($_GET['tri'])) { $tri = $_GET['tri']; } else { $tri = "titre"; } if(isset($_GET['ordre'])) { $ordre = $_GET['ordre']; } else { $ordre = "ASC"; } //Récupération des taches créées par l'utilisateur (dans la BDD) $reponse = $base->query("SELECT * FROM gestionnaire ORDER BY $tri $ordre"); //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>';