Problème tri et url
Résolu
benf35
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
benf35 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
benf35 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
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.
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.
Ensuite, je traite le résultat:
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 çà:
De même si je trie par ordre décroissant.
Vous avez une idée? Ou une question?
Merci !
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:
- Problème tri et url
- Url - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Comment changer url iptv - Forum Créer un site
- Atlas pro url serveur invalide - Forum TV & Vidéo
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
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
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.
É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.
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 } ?>
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
/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
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.
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.
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 :=)
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 :=)