Page 1 sur 1
tri multicritere
Posté : 20 févr. 2009, 19:47
par jp.bond
bonjour,
je suis à la recherche d'une "méthode" pour pouvoir faire des tris multicritères sur mes tableaux.
Je suis souvent amené à faire un tableau d'affichage pour le contenu de la base de données, je sais faire un tri sur un critère, puis sur un autre, mais j'aurai aimé pouvoir faire des tris sur x criteres en meme temps, comme on peut le faire avec excel par exemple...
Et surtout que ce soit l'utilisateur qui puisse faire ces tris multiples en fonction de ses envies....
vous avez une idée ? je suis sur que ca doit exister, j'ai juste pas d'idée sur la facon de le mettre en oeuvre
merci de votre aide
Posté : 20 févr. 2009, 20:39
par AB
C'est possible de faire plusieurs tris regroupés dans une fonction mais c'est au cas par cas, du sur mesure en fonction de la structure de tes tableaux et des tris que tu souhaites faire.
Posté : 23 févr. 2009, 20:24
par jp.bond
alors je vais préciser avec un exemple concret :
je veux gerer une navigation avec une base de données, pour la hierarchisation.
J'ai une categorie cat, une sous categorie scat, et un 3e niveau sscat.
si ma base ressemble à cela, avec les colonnes : cat / scat / sscat / titre, comment ordonner d'abord sur la cat, puis sur la scat, puis sur la sscat avec une requete ou une fonction ? A moins qu'il faille que je joue obligatoirement sur des boucles imbriquées ?
exemple de table desordonnée :
cat / scat / sscat / titre
1 / 1 / 1 / accueil
3 / 1 / 2 / toto
3 / 1 / 1 / tata
2 / 2 / 1 / tutu
2 / 1 / 1 / titi
le but est bien sur d'avoir ma table ordonnée comme suit :
1 / 0 / 0 / accueil
2 / 1 / 1 / titi
2 / 1 / 0 / Part1
2 / 2 / 1 / tutu
3 / 1 / 1 / tata
3 / 1 / 1 / sPart1
3 / 1 / 2 / toto
3 / 1 / 0 / Part2
pour avoir un menu ainsi :
accueil
Part 1
+ titi
+ tutu
Part 2
+ sPart1
+ + tata
+ + toto
je suis sur qu'il y a un truc à la con pour ordonner ce genre de table, mais j'arrive pas trouver...
merci de votre aide
jp
Posté : 23 févr. 2009, 21:02
par AB
Quand tu fais ta requête regarde du côté de ORDER BY
Il faudra peut être faire un tri complémentaire en php suivant les cas.
Posté : 23 févr. 2009, 23:31
par Aureusms
C'est assez simple avec ORDER BY.
Dans ton cas : ORDER BY cat, scat, sscat (avec des virgules).
Je vois ce que tu veux faire. Le plus difficile va être de sortir toutes tes données dans l'ordre (ca c'est facile avec l'exemple précédent) mais surtout de faire une "mise en enfant" (je connais pas très bien le terme technique). Ce que je veux dire par là est que tu dois dire par exemple que titi et tutu sont les enfant de Part1. C'est bien ce que tu veux ?
Posté : 24 févr. 2009, 11:56
par jp.bond
effectivement, j'avais teste le ORDER BY cat, scat, sscat ASC mais j'avais dû faire une petite faute car ca ne me donnait pas le resultat escompté. Mais vu que tu m'en as reparlé, j'ai retenté et ce coup j'ai bien ce que je veux !
Pour faire ressortir l'affiliation, je me suis basé sur les scat qui sont egales à zero et j'arrive à une présentation dans l'ordre et propre !
nickel et merci !