Problème tri et url

Résolu/Fermé
benf35 Messages postés 37 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 21 août 2011 - 17 juin 2011 à 14:52
benf35 Messages postés 37 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 21 août 2011 - 17 juin 2011 à 16:37
Bonjour,

J'ai un petit problème pour gérer les tris.

Je m'explique.

J'ai un tableau html, avec des lignes et des colonnes.

J'aimerais que pour chaque entête de colonne, on ai la possibilité de trier les éléments par ordre croissant ou décroissant. J'ai donc ajouter une variable dans ma requête SQL, de cette forme.

$req ="select * from  colonne1,colonne2 where colonne1.num=colonne2.num order by $order"


Ensuite, sur l'entête de la colonne, je rajoute un lien, qui va me permettre d'ajouter les conditions de tri à ma requête.

//je selectionne l'url courant
$url = $_SERVER['REQUEST_URI']; 

//dans mon tableau, j'insère le lien, avec les élément de trie voulus
<tr>
<th>Element entête <a href="<?php echo $url.'?tri=element1&sens=croissant'; ?>" >
<br />+</a>/<a href="<?php echo $url.'?tri=element1l&sens=asc'; ?>" >-</a></th>
</tr>


Ensuite, je traite le résultat:

    if(isset($_GET['tri']))
        {        
             if($_GET['tri']) 
                  $order=$_GET['tri'].".CODE";
                if($_GET['sens']=='asc')
                {
                  $cons.=" ASC";
                }
              
        }else
        {
            $cons="element2.numero";
        }


Cela fonctionne, la première fois que je clique dessus. Mais il faudrait que les données du GET disparaissent une fois le tableau affiché avec le tri voulu. Histoire que lordque je, clique à nouveau sur le "+" censer trier par ordre croissant, cela ne me fasse pas çà:

mapage.php?tri=element1&sens=croissant?tri=element1&sens=croissant


De même si je trie par ordre décroissant.

Vous avez une idée? Ou une question?

Merci !
A voir également:

7 réponses

Bonjour

utilise $url = $_SERVER['PHP_SELF]; plutôt que $url = $_SERVER['REQUEST_URI'];
Comme ça tu récupères l'adresse de la page sans les données du GET
0
benf35 Messages postés 37 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 21 août 2011 4
Modifié par benf35 le 17/06/2011 à 15:49
Ah mince, j'ai pas précisé.

Étant donné que j'effectue aussi des tris via des listes déroulantes et cases à cocher, et que je récupère ces valeurs par l'url, j'aimerais que une fois les critères de tri insérés, je puisse trier par ordre croissant ou décroissant.
0
benf35 Messages postés 37 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 21 août 2011 4
Modifié par benf35 le 17/06/2011 à 15:58
J'ai rajouté çà d'ailleurs, sinon j'avais une erreur:

if($_GET){   
     ?>   
   <tr> 
      <th>Entete1 <a href="<?php echo $url.'&tri=element1&sens=croi'; ?>" > 
          <br />+</a>/ 
          <a href="<?php echo $url.'&tri=element1l&sens=asc'; ?>" >-</a> 
      </th>   
   <?php   
    }else{   
     ?>   
  <tr> 
       <th>Entete1 <a href="<?php echo $url.'?tri=element1&sens=croi'; ?>" > 
           <br />+</a>/ 
            <a href="<?php echo $url.'?tri=element1l&sens=asc'; ?>" >-</a> 
         </th>   
                  
     <?php   
   }   
                 
   ?>
0
Qu'est-ce qui t'empêche de trier par ordre croissant ou décroissant dans le fait d'utiliser PHP_SELF ? Je ne vois pas le rapport
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benf35 Messages postés 37 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 21 août 2011 4
17 juin 2011 à 16:07
Quand je fais un tri sur les colonnes (j'entends par là sans ordre croissant et autre), j'ai un truc du genre dans l'url:


/mapage.php?etape=tri&client=2

Si je met
$url = $_SERVER['REQUEST_URI'];

j'obtiens au clique sur tri par ordre croissant

/mapage.php?etape=tri1&client=2&tri=element1&sens=croissant

donc çà marche mais les données s'ajoute dans l'url quand je reclique.


Avec
$url = $_SERVER['PHP_SELF];

j'ai toujours
/mapage.php?etape=tri&client=2, les critères de tri de l'url ne sont pas conservés
0
Si j'en crois ton message de 15h54, tu ajoutes TOUJOURS un critère de tri. Donc je comprends très bien qu'ils s'accumulent à chaque fois quand tu utilises $_SERVER['REQUEST_URI'], mais il n'ont pas de raison de disparaître quand tu utilises PHP_SELF.
Ou alors c'est qu'il y a d'autres liens ailleurs sur ta page, qui n'ont pas de critère de tri, et il faut leur en mettre.

Remarque que personnellement, dans ce genre de cas, je ne transmets pas les critères de tri de page en page par URL, je me contente de les enregistrer dans une session, c'est bien plus facile à gérer. Et on retrouve ses critères quand on revient même si on va sur d'autres pages du site.
0
benf35 Messages postés 37 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 21 août 2011 4
17 juin 2011 à 16:37
Ouai, je crois que j'aurais du faire :/ Mais peut être quand j'optimiserais le site plus tard, le temps me manque.

Sinon, j'ai pas trop compris j'avoue, la prmière partie de ton message.

J'ai réussi à résoudre autrement mon problème.

En fait, quand l'autre tri est fait, je récupère la page courante avec l'url, sinon, je prend uniquement la page courante (sans l'url donc).
if($_GET['triCol'])
{
$url = $_SERVER['PHP_SELF'];
}
else
{
$url=$_SERVER['REQUEST_URI'];
}


Merci pour ton aide!

C'est vrai que les sessions m'auraient beaucoup facilitées la vie :=)
0