[PHP]Trier colonnes par ordre alphabétique
Fermé
Sybrix
-
8 juil. 2010 à 13:59
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 - 22 juil. 2010 à 15:42
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 - 22 juil. 2010 à 15:42
A voir également:
- [PHP]Trier colonnes par ordre alphabétique
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Classer les applications par ordre alphabétique iphone - Guide
- Word colonnes indépendantes - Guide
- Excel graphique trier par ordre décroissant ✓ - Forum Excel
- Easy php - Télécharger - Divers Web & Internet
10 réponses
AmeryCourtz
Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
18
9 juil. 2010 à 14:18
9 juil. 2010 à 14:18
En fait sur le titre de tes colonnes tu rentre un lien qui renvoi sur la page qui traite l'affichage de ton tableau avec comme paramètre dans l'url un identifiant pour distinguer le nom de la colonne sur laquel tu effectue le trie.
J'ai pas d'exemple tout de suite, mais j'essaierais de tant mettre un quand je pourrais.
Sinon ta un exemple la :
http://seebz.net/42-trier-les-colonnes-d-un-tableau-en-php.html
J'ai pas d'exemple tout de suite, mais j'essaierais de tant mettre un quand je pourrais.
Sinon ta un exemple la :
http://seebz.net/42-trier-les-colonnes-d-un-tableau-en-php.html
AmeryCourtz
Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
18
Modifié par AmeryCourtz le 22/07/2010 à 15:43
Modifié par AmeryCourtz le 22/07/2010 à 15:43
Désolé, j'ai pas trop le temps avec mon taf de regarder. Normalement c'est juste un parametre a rajouter.
Perso si t'a pas envie de te prendre la tete utilise du javascript, tiens utilise sa.
https://www.paperblog.fr/1008181/trier-vos-tableaux-avec-javascript/
EDIT: pour plus de détails pense a consulter le code source de la demo : http://www.smashou.info/demos/table-sort.html
Perso si t'a pas envie de te prendre la tete utilise du javascript, tiens utilise sa.
https://www.paperblog.fr/1008181/trier-vos-tableaux-avec-javascript/
EDIT: pour plus de détails pense a consulter le code source de la demo : http://www.smashou.info/demos/table-sort.html
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
8 juil. 2010 à 14:09
8 juil. 2010 à 14:09
Après le clic sur le bouton tu recharge ta page en faisant de nouveau ta requête mais en mettant un order by la_colonne_que_tu_veux_trier ASC ou DESC selon que tu clique sur l'une ou l'autre flèche
AmeryCourtz
Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
18
Modifié par AmeryCourtz le 8/07/2010 à 15:51
Modifié par AmeryCourtz le 8/07/2010 à 15:51
Personnelement j'utilise un lien qui renvoi sur la même page de traitement ou s'affiche le tableau en passant un argument pour le trie (ex : trieId) qui est le nom de ma colonne. (Je sécurise avec du htaccess et expression regulière donc pas d'injection)
genre :
ensuite juste avant ton appel de ta requete tu fait sa
et dans ta requete tu fait un 'ORDER BY ".$OrderSql."'
EDIT : formulaire_tableau-trieId.html <== .htaccess ==> index.php?Corps=AffichageTableu?montrie=trieId
genre :
<th href='formulaire_tableau-trieId.html'>trieId</th> <th href='formulaire_tableau-trieNom.html'>trieNom</th>
ensuite juste avant ton appel de ta requete tu fait sa
if(isset($_GET['montrie']){ $OrderSql = $_GET['montrie']; }else{ $OrderSql = 'trie_par_default'; } $tbl = marequete($OrderSql);
et dans ta requete tu fait un 'ORDER BY ".$OrderSql."'
EDIT : formulaire_tableau-trieId.html <== .htaccess ==> index.php?Corps=AffichageTableu?montrie=trieId
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Excuse moi je suis débutante en php, je ne comprend pas bien le principe.
Aurais tu un exemple concret?
Merci d'avance
Aurais tu un exemple concret?
Merci d'avance
Alors quant au code exemple que tu m'as fourni, cela ne fonctionne pas chez moi.
En effet lorsque je clique sur le nom de la colonne, cela me renvoi sur une autre page.
Comment indiquer le lien de ma page? Car dans la fonction sort_link, ce n'est pas indiqué.
Merci de votre aide.
// Notre fonction qui affiche les liens
function sort_link($text, $order=false)
{
global $order_by, $order_dir;
if(!$order)
$order = $text;
$link = '<a href="?order=' . $order;
if($order_by==$order && $order_dir=='ASC')
$link .= '&inverse=true';
$link .= '"';
if($order_by==$order && $order_dir=='ASC')
$link .= ' class="order_asc"';
elseif($order_by==$order && $order_dir=='DESC')
$link .= ' class="order_desc"';
$link .= '>' . $text . '</a>';
return $link;
}
En effet lorsque je clique sur le nom de la colonne, cela me renvoi sur une autre page.
Comment indiquer le lien de ma page? Car dans la fonction sort_link, ce n'est pas indiqué.
Merci de votre aide.
// Notre fonction qui affiche les liens
function sort_link($text, $order=false)
{
global $order_by, $order_dir;
if(!$order)
$order = $text;
$link = '<a href="?order=' . $order;
if($order_by==$order && $order_dir=='ASC')
$link .= '&inverse=true';
$link .= '"';
if($order_by==$order && $order_dir=='ASC')
$link .= ' class="order_asc"';
elseif($order_by==$order && $order_dir=='DESC')
$link .= ' class="order_desc"';
$link .= '>' . $text . '</a>';
return $link;
}
Finalement j'ai réussi grâce au code exemple! j'ai corrigé mon erreur.
Une dernière question il est indiqué "Si le paramètre inverse existe, le tri se fera dans l'ordre inverse. "
Comment procéder pour créer ce paramètre inverse?
Merci
Une dernière question il est indiqué "Si le paramètre inverse existe, le tri se fera dans l'ordre inverse. "
Comment procéder pour créer ce paramètre inverse?
Merci
AmeryCourtz
Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
18
15 juil. 2010 à 10:15
15 juil. 2010 à 10:15
Desolé de pas répondre plus tôt.
Alors pour inverser le sens des trie il faut l'attribuer au lien afficher. Dans le code exemple c'est celle-ci qui le fait .
(Tu ajoute l'attribut inverse)
Qui elle même affecte la requête ici
Par defaut il est a ASC.
Maintenant, normalement t'a pas de modification à faire, mais montre ton code je regarderais.
PS: Le code que je t'ai fourni n'est qu'un exemple parmi tant d'autre rien ne t'empeche d'en prendre un autre qui correspond mieux à ta façon de coder
Alors pour inverser le sens des trie il faut l'attribuer au lien afficher. Dans le code exemple c'est celle-ci qui le fait .
$link .= '&inverse=true';
(Tu ajoute l'attribut inverse)
Qui elle même affecte la requête ici
$order_dir = isset($_GET['inverse']) ? 'DESC' : 'ASC';
Par defaut il est a ASC.
Maintenant, normalement t'a pas de modification à faire, mais montre ton code je regarderais.
PS: Le code que je t'ai fourni n'est qu'un exemple parmi tant d'autre rien ne t'empeche d'en prendre un autre qui correspond mieux à ta façon de coder
Hello! Alors voici mon code, il me permet de ranger les colonnes dans l'ordre alphabétique croissant mais non décroissant, si tu peux jetter un oeil..
Merci d'avance.
Merci d'avance.
</head> <body class="body" bgcolor="#DFF5FF"> <?php include ('../annexes/connexions/connexion.php'); // Le nom de la table $table_name = 'eds_actif_jointure'; //Tri sur colonne $tri_autorises = array ('id_evenement', 'numTicket', 'prioriteTraitement', 'idUn', 'date_intervention', 'nom', 'prenom', 'email'); $order_by = in_array ($_GET['order'], $tri_autorises) ? $_GET['order'] : 'nom'; //Sens du tri $order_dir = isset($_GET['inverse']) ? 'DESC' : 'ASC' ; //Préparation de la requete $reqfinale = mysql_query ("SELECT id_evenement, numTicket, prioriteTraitement, idUn, date_intervention, nom_agent, prenom FROM {$table_name} ORDER BY {$order_by} {$order_dir}") or die ("impossible d'executer la requete finale"); // Notre fonction qui affiche les liens function sort_link ($text, $order=false) { global $order_by, $order_dir; if(!$order) $order=$text; $link = '<a href="?order='.$order. '&traitement=consult'; if(order_by==$order && $order_dir=='ASC') $link='&inverse=true'; $link.='"'; if($order_by==$order && $order_dir=='ASC') $link.='class="order_asc"'; elseif($order_by==$order && $order_dir=='DESC') $link='class="order_desc"'; $link.='>'.$text.'</a>'; return $link; } //Affichage ?> <style type="text/css"> a.order_asc, a.order_desc:hover { padding-right:15px; backgroung:transparent url(s_asc.png) right no-repeat; } a.order_desc, a.order_asc:hover { padding-right:15px; background:transparent url(s_desc.png) right no repeat; } </style> <table width="100%" align="center"> <tr> <th align='center' class='entete'><?php echo sort_link('MCMT', 'id_evenement')?></th> <th align='center' class='entete'><?php echo sort_link('Numéro Océane', 'numTicket' )?></th> <th align='center' class='entete'><?php echo sort_link('Priorité de Traitement', 'prioriteTraitement') ?></th> <th align='center' class='entete'><?php echo sort_link('SQTQS', 'idUn') ?></th> <th align='center' class='entete'><?php echo sort_link('Date intervention', 'date_intervention' )?></th> <th align='center' class='entete'><?php echo sort_link('Nom', 'nom') ?></th> <th align='center' class='entete'><?php echo sort_link('Prénom', 'prenom' ) ?></th> <th align='center' class='entete'><a href="../affichage/elodie_affichage_mail.php" target="haut" title="Envoyer un mail" class=""><strong>Envoyer<strong/></a></th> </tr> <?php // Boucle affichage tableau while($row = mysql_fetch_assoc($reqfinale)){ ?> <tr class="<?php if(($i%2) == 0) {echo "ma_couleur1";} else{ echo "ma_couleur2";}?>"> <td class="centrer"><? echo $row['id_evenement']; ?> <BR></td> <td class="centrer"><? echo $row['numTicket']; ?> <BR></td> <td class="centrer"><? echo $row['prioriteTraitement']; ?> <BR></td> <td class="centrer"><? echo $row['idUn']; ?></td> <td class="centrer"><? echo $row['date_intervention']; ?></td> <td class="centrer"><? echo $row['nom']; ?></td> <td class="centrer"><? echo $row['prenom']; ?></td> <td class="centrer"><input type="checkbox" checked="checked"/><input type="hidden" name='email' value="<?echo $row['email']; ?>"</td> </tr> <?php } ?> </table> </body> </html>