[INFO] Trier les tables à la volée

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

13 mars 2005, 12:50

Voici de quoi faire économiser de précieuses ressources coté serveur pour la gestion du tri des tables, et de quoi ajouter une fonctionnalité très sympa à vos tables statiques:

http://www.kryogenix.org/code/browser/sorttable/

Fonctionnement, étant donné que vous avez une table de cette forme:

Code : Tout sélectionner

<table ...> <tr><th>Titre1</th><th>Titre2</th>...</tr> <tr><td>Val1.1</td><td>Val2.1</td>...</tr> <tr><td>Val1.2</td><td>Val2.2</td>...</tr> ... </table>
Il suffit d'inclure le script téléchargé (<script src="sorttable.js"></script>), et de transformer vos titres en liens utilisables par le script:
<th>TitreX</th>
devient (les parties en rouge sont celles à ajouter):
<th><a href="#" class="sortheader" onclick="ts_resortTable(this)">TitreX<span class="sortarrow">&nbsp;&nbsp;&nbsp;</span></a></th>

Ben voilà, c'est tout :), en cliquant sur les titres vous pouvez trier votre table selon la colonne (ordres croissants et decroissants s'alternent).

Comme vous le voyez la partie en rouge est fixe, et ne dépend en rien de l'environnement, donc il est très simple de faire un chercher/remplacer pour modifier globalement son code (avec l'expression régulière qui va bien :P).


J'ajoute que si vous voulez "pré-trier" votre table, ce n'est pas beaucoup plus compliqué: ajoutez un ID au lien sur le titre de la colonne que vous voulez trier.
Par exemple: <th><a href="#" class="sortheader" onclick="ts_resortTable(this)" id="default_sort">TitreX<span class="sortarrow">&nbsp;&nbsp;&nbsp;</span></a></th>

Puis triez selon cette colonne avec l'instruction JS ts_resortTable(document.getElementById("default_sort"));
(bien sûr cette instruction doit être placée après la déclaration de la table et l'insertion de sorttable.js).

Voilà, une petite solution très sympathique, testée sous IE/Opera/Firefox.

Mammouth du PHP | 1339 Messages

13 mars 2005, 13:59

Très bon script c'est vrai que je le faisait avec de simple lien en PHP ca peut etre interressant !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

freemanolimit
Invité n'ayant pas de compte PHPfrance

22 déc. 2006, 18:56

Bonjour,

Je n'arrive pas a utiliser ta fonction pour le tri d'une colonne.

Peux tu donner un exemple concret stp


Merci,

Arnaud.

Mammouth du PHP | 1885 Messages

06 janv. 2007, 06:52

La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

06 janv. 2007, 07:56

This version of ActiveWidgets library does not work in Opera browser. If you need the version which supports Opera - you should upgrade to ActiveWidgets Professional Edition.
Je ne les ai jamais utilisées mais les fonctions "Grid" de YUI-ext ont l'air tout simplement ultimes.

Mammouth du PHP | 1885 Messages

06 janv. 2007, 08:36

Super! Je prends note!
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 1511 Messages

06 janv. 2007, 12:34

Alors la, moi qui m'embetais a chaque fois pour coder ce genre de conneries !
Par contre, sur le lien que tu as passé hubert, comment récupere t'on la valeur modifiée ?
Par contre, pour l'organisation des listes, le seul truc bloquant, c'est dans les listes de membres... Car on ne peut pas afficher toute la la liste des membres d'un coup malheureusement...
Imaginez un site de 30.000 membres :lol:
@+

ViPHP
fab
ViPHP | 2657 Messages

06 janv. 2007, 13:12

Si j'ai bien compris il faut généré un tableau en javascript pour effectuer le tri, pas tres cool si le tableau fait 200 lignes... L'utilisateur devra en supporter deux fois le poids au chargement
Je suis pas fan :p
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphanteau du PHP | 14 Messages

12 nov. 2007, 17:08

Et bien moi j'aime ce qui me fait gagner du temps !
Et là, ca me fait gagner un temps pas possible !

Merci beaucoup ! ;)

ViPHP
fab
ViPHP | 2657 Messages

12 nov. 2007, 23:07

Finalement à l'occasion d'un stage j'ai trouvé une utilité à ce genre de systemes et particulièrement lorsque les tableaux sont très lourd.

Pour ceux qui connaissent jquery il existe un plugin permettant de gérer simplement ça :
http://docs.jquery.com/Plugins/Tablesorter
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 1511 Messages

13 nov. 2007, 00:37

Le problème après, c'est qu'on rentre dans le débat de l'accessibilité...
Et a partir de la, si on veut faire un site a la fois dynamique et accessible, on est obligés de faire double codage...
Une version statique (ou l'on fait la mise en page html) et une version dynamique avec JSON et tout le tralala...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 nov. 2007, 01:11

Ah malheureux n'avance pas ce sujet ici :lol:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 4039 Messages

13 nov. 2007, 11:50

Finalement à l'occasion d'un stage j'ai trouvé une utilité à ce genre de systemes et particulièrement lorsque les tableaux sont très lourd.

Pour ceux qui connaissent jquery il existe un plugin permettant de gérer simplement ça :
http://docs.jquery.com/Plugins/Tablesorter
:priere: beni-sois-tu, je m'appretais justement à coder ça.. ça me laissera le temps de mieux fignoler d'autres aspects..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 1511 Messages

13 nov. 2007, 22:09

Ah malheureux n'avance pas ce sujet ici :lol:
C'est comme en politique, il y a toujours des sujets qui fachent ^^