Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Trie sur tableau

13 réponses
Avatar
matt
Bonjour,

Je voudrais réaliser un trie sur un tableau à plusieurs dimensions...
Pour trier sur une colonne pas de problème...

Mais je voudrais faire un trie plus "intelligent".

Je m'explique

je voudrais dans Puis apres le clique
un premier temps sur un autre bouton
obtenir ceci -> obtenir ceci ->
(ca ok, je sais) (ca, je ne sais pas)
+---+---+ +---+---+ +---+---+
| A | Z | | A | Z | | A | X |
+---+---+ +---+---+ +---+---+
| B | W | | A + Y | | A | Y |
+---+---+ +---+---+ +---+---+
| C | O | | A + X | | A | Z |
+---+---+ +---+---+ +---+---+
| A | Y | | B + W | | B | K |
+---+---+ +---+---+ +---+---+
| B | K | | B + K | | B | W |
+---+---+ +---+---+ +---+---+
| A | X | | C + O | | C | M |
+---+---+ +---+---+ +---+---+
| C | M | | C + M | | C | O |
+---+---+ +---+---+ +---+---+

(ouf j'ai fini avec mes dessins, pas facile :-))

Pour résumer, je voudrais que mon deuxième trie prenne en compte mon
premier (pas facile)...


Si vous avez une idée, une piste, un truc qui pourrait faire avancer mon
smiblik, je vous en remercie d'avance...

Matt...

10 réponses

1 2
Avatar
Mickaël Wolff
matt a écrit :
Bonjour,

Je voudrais réaliser un trie sur un tableau à plusieurs dimensions...
Pour trier sur une colonne pas de problème...



Techniquement, il est vrai qu'un tableau à deux dimensions est
multi-dimensionnel :-D

Pour résumer, je voudrais que mon deuxième trie prenne en compte mon
premier (pas facile)...



Est-ce l'ordre dans lequel tu as trié qui doit importer, ou l'ordre
d'affichage des colonnes ?
Comment retiens-tu le fait que tes colonnes sont triées ?

Ce que tu souhaites faire est simple. C'est juste que tu ne simplifie
pas assez le problème, ce qui fait que tu le vois comme compliqué. Mais
finalement, en créant les bons objets, et les bons comparateurs pour le
tri, c'est faisable facilement.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
matt
Bonjour,

Mickaël Wolff a écrit :
Techniquement, il est vrai qu'un tableau à deux dimensions est
multi-dimensionnel :-D



???

Est-ce l'ordre dans lequel tu as trié qui doit importer, ou l'ordre
d'affichage des colonnes ?



Dans l'ordre dans lequel j'ai trié mes colonnes.
Je vois trop ce que tu veux dire pour la deuxième proposition.

Comment retiens-tu le fait que tes colonnes sont triées ?



C'est le but de ma question, c'est un tout.

Ce que tu souhaites faire est simple.



Tant mieux,

C'est juste que tu ne simplifie pas assez le problème, ce qui fait que tu le vois comme compliqué.



Pour moi le problème est simple, je trie d'abord une première colonne
puis une deuxième, comme mon (joli) croquis.

Mais finalement, en créant les bons objets, et les bons comparateurs pour le
tri, c'est faisable facilement.



C'est la que c'est plus compliqué pour moi...

Sinon, tu as une piste, un truc enfin quelque chose ?

Matt...
Avatar
Olivier Miakinen
Le 21/06/2008 07:40, matt a écrit :

Pour résumer, je voudrais que mon deuxième trie prenne en compte mon
premier (pas facile)...

Si vous avez une idée, une piste, un truc qui pourrait faire avancer mon
smiblik, je vous en remercie d'avance...



La première idée, toute simple, c'est d'inverser l'ordre des tris. Si tu
tries d'abord selon la 2e colonne puis selon la 1re alors tu obtiendras
le résultat que tu souhaites (pourvu bien sûr que le tri sur le 1re
colonne n'inverse pas des lignes déjà triées).
Avatar
matt
Olivier Miakinen a écrit :
Le 21/06/2008 07:40, matt a écrit :
Pour résumer, je voudrais que mon deuxième trie prenne en compte mon
premier (pas facile)...

Si vous avez une idée, une piste, un truc qui pourrait faire avancer mon
smiblik, je vous en remercie d'avance...



La première idée, toute simple, c'est d'inverser l'ordre des tris. Si tu
tries d'abord selon la 2e colonne puis selon la 1re alors tu obtiendras
le résultat que tu souhaites (pourvu bien sûr que le tri sur le 1re
colonne n'inverse pas des lignes déjà triées).



Bonjour,

Je viens de tester, effectivement, ça marche sur mon petit tableau.

Je vais faire des test sur un tableau plus conséquent pour voir si ça
tient le choc.

merci,

Matt.
Avatar
Olivier Miakinen
Le 21/06/2008 12:09, matt a écrit :

La première idée, toute simple, c'est d'inverser l'ordre des tris. [...]



Je viens de tester, effectivement, ça marche sur mon petit tableau.

Je vais faire des test sur un tableau plus conséquent pour voir si ça
tient le choc.



Si tu veux le faire en une seule opération, ce qui sera plus efficace
pour un grand tableau, alors il suffit de refaire le tri avec un
opérateur de comparaison des lignes a et b qui retourne les résultats
suivants :
a = b si a.col1 = b.col1 et a.col2 = b.col2
a < b si a.col1 < a.col2 ou (a.col1 = b.col1 et a.col2 < b.col2)
a > b si a.col1 > a.col2 ou (a.col1 = b.col1 et a.col2 > b.col2)
Avatar
matt
Olivier Miakinen a écrit :
Le 21/06/2008 12:09, matt a écrit :
La première idée, toute simple, c'est d'inverser l'ordre des tris. [...]


Je viens de tester, effectivement, ça marche sur mon petit tableau.

Je vais faire des test sur un tableau plus conséquent pour voir si ça
tient le choc.



Si tu veux le faire en une seule opération, ce qui sera plus efficace
pour un grand tableau, alors il suffit de refaire le tri avec un
opérateur de comparaison des lignes a et b qui retourne les résultats
suivants :
a = b si a.col1 = b.col1 et a.col2 = b.col2
a < b si a.col1 < a.col2 ou (a.col1 = b.col1 et a.col2 < b.col2)
a > b si a.col1 > a.col2 ou (a.col1 = b.col1 et a.col2 > b.col2)



En fait, ce qui se passe, je récupère les valeurs d'un fichier xml que
je met dans un tableau. Il peut y avoir un certains nombres de champs
(15 au maximum) et le client peut à sa guise, trier sur la première puis
la troisième puis la deuxième, enfin comme il veut.

Il faut que je vois, c'est pour le boulot, donc je vais voir ça lundi...

Merci encore,

Matt...
Avatar
Mickaël Wolff
matt a écrit :
Bonjour,

Mickaël Wolff a écrit :
Techniquement, il est vrai qu'un tableau à deux dimensions est
multi-dimensionnel :-D



???



C'était une boutade, pas quelque chose d'existentiel.

Est-ce l'ordre dans lequel tu as trié qui doit importer, ou l'ordre
d'affichage des colonnes ?



Dans l'ordre dans lequel j'ai trié mes colonnes.
Je vois trop ce que tu veux dire pour la deuxième proposition.



Simplement qu'on pouvait imaginer qu'en cliquant sur les colonnes, tu
changes un flag qui indique que la colonne est triée, sans tenir compte
de l'ordre de clique de la colonne.

Comment retiens-tu le fait que tes colonnes sont triées ?



C'est le but de ma question, c'est un tout.



Tu avais peut-être déjà une idée. Est-ce que tu utilises la structure
HTML pour retenir ça, ou est-ce que tu utilises des objets javascript ?

Mais finalement, en créant les bons objets, et les bons comparateurs
pour le
tri, c'est faisable facilement.



C'est la que c'est plus compliqué pour moi...

Sinon, tu as une piste, un truc enfin quelque chose ?



Oui, quand même. Mais c'était moins facile que ça n'en avait l'air.
J'ai fait quelque chose
<http://lupusmic.org/pro/projets/pool/sort-table.tar.bz2> qui doit
s'approcher de ce que tu voulais. À adapter selon les besoins.
Ça tombe bien, ça faisait un moment que je voulais en faire un !


--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
matt
Mickaël Wolff a écrit :

Tu avais peut-être déjà une idée. Est-ce que tu utilises la structure
HTML pour retenir ça, ou est-ce que tu utilises des objets javascript ?



Pour le moment, j'ai crée un objet pour manipuler un tableau (affichage,
pagination, trie sur une colonne, filtrage). Il faut donc que
j'implémente le trie sur plusieurs colonnes.

<http://lupusmic.org/pro/projets/pool/sort-table.tar.bz2> qui doit
s'approcher de ce que tu voulais. À adapter selon les besoins.
Ça tombe bien, ça faisait un moment que je voulais en faire un !



Je récupère le fichier et je le regarde demain au boulot. Comme tu dis,
il faudra surement l'adapter à mes besoins.

Merci,

Matt...
Avatar
Mickaël Wolff
matt a écrit :
Pour le moment, j'ai crée un objet pour manipuler un tableau (affichage,
pagination, trie sur une colonne, filtrage). Il faut donc que
j'implémente le trie sur plusieurs colonnes.



J'ai fait des choses dans le même esprit.

Je récupère le fichier et je le regarde demain au boulot. Comme tu dis,
il faudra surement l'adapter à mes besoins.



Au pire, utilises-le comme inspiration. Je pense que je mettrais à
jour le fichier demain matin. J'ai beaucoup refactoré le bins, avec pas
mal d'options. Et surtout, j'ai supprimé des bêtises. Mais mon plus gros
problème reste la gestion des colspan et rowspan. J'ai pas encore fait
de recherches dans ce sens.

il sera publié à la même URL. Contactes-moi en privé au pire.

Merci,



Merci à toi de m'avoir relancé sur ce cadavre !

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
SAM
Mickaël Wolff a écrit :
matt a écrit :
Pour le moment, j'ai crée un objet pour manipuler un tableau (affichage,
pagination, trie sur une colonne, filtrage). Il faut donc que
j'implémente le trie sur plusieurs colonnes.





Je trie, tu tries, il trie
implémenter le tri sur une colonne

Merci à toi de m'avoir relancé sur ce cadavre !



Ici ils s'appuient sur jQuery : plugin tablesorter

<http://tablesorter.com/docs/>
<http://tablesorter.com/docs/#Demo>

--
sm
1 2