|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Bonjour à tous et toutes,
Si vous ne connaissez pas la gestion d'arbre par représentation intervallaire, ne vous embêtez pas avec ce post. http://sqlpro.developpez.com/cours/arborescence/ Mais ceux qui maîtrisent cet excellent système et qui ont lu le non moins excellent article de Frédéric Brouard, peuvent peut-être m'apporter leurs lumières. Je construis une FAQ avec des catégories qui peuvent avoir autant de sous catégories que ce que désire le user. D'où l'emploi de la méthode intervallaire. Mais, cerise sur le gâteau, je veux permettre au user d'ordonner les catégories, que ce soit les parents (par rapport aux autres parents) ou les filles (par rapport aux autres filles sous leur parent). Voici la table exemple des catégories de FAQ : ![]() J'ai donc ajouté une colonne "poids". Les catégories parent sont repérables puisque id_pere est à 0. Prenons l'exemple de la catégorie "Navigation" (id 2) : elle a les enfants 3 et 4 et on voit que 3 a lui-même deux enfants : 12 et 13. Ok. Maintenant regardons l'ordre (poids) : La catégorie 2 est la 3ème des catégories parents : ça roule. La 4 est le 1er de ses 2 enfants et la 3 le 2ème. La 13 est le 1er enfant de la 3 et la 12 le 2ème. Tout cela est bien joli, mais je coince sur l'affichage final des catégories : Voici les requêtes : Code :
Citation:
Citation:
Citation:
Alors ma question est : comment je peux organiser tout ça pour obtenir, dans ce cas : Citation:
Voila. Je ne m'attends pas à ce que ce post reçoive beaucoup de réponses, mais si un pro des arbres intervallaires passe par là, et bien je le remercie de s'arrêter un moment... |
||||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
A première vue, je dirais qu'il faut que vous teniez compte du poids pour la valorisation de vos bornes gauche/droite de manière à ce qu'elle respectent l'ordre donné par le poids en plus de celui dicté par la relation de filiation.
Ca vous inspire ? |
|
|
00
|
|
|
#3 | |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Bonjour, et d'abord merci de votre intérêt pour mon post.
Citation:
Vous voulez dire qu'il faudrait updater les bornes en même temps qu'on détermine les poids ? J'ai peur que cela crée un décalage et un sac de noeuds avec les autres catégories... Ou alors tenir compte du poids déjà en place pour l'insertion de nouvelles catégories ? Ca me paraît difficile vu que le user peut créer des dizaines de catégories et ensuite, les ordonner. Ce sont deux opérations distinctes dans l'appli... Mais c'est peut-être là que le bât blesse... Je me demandais si je pourrais pas récolter les données dans un tableau PHP et ensuite le réordonner...mais ça c'est pas gagné non plus... |
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
A chaque fois que vous :
. insérez un élément . supprimez un élément . modifiez la filiation d'un élément . modifiez le poids d'un élément Vous recalculez vos bornes. C'est ce que vous faîtes déjà sans le paramètre poids. En quoi ce nouveau paramètre de poids à prendre en compte est plus problématique ? |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Oui, je recalcule les bornes à chaque manip des catégories.
Mais franco, je ne vois pas comment intégrer le paramètre poids à ce moment-là. |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
J'ai beau retourner le truc dans tous les sens, je ne vois pas du tout comment intégrer la notion de poids aux bornes...
Du moins pour que le poids s'adapte au bornes... Aurais-tu un exemple ? |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
C'est pourquoi ce genre d'arbre n'est pas forcément si simple par rapport à une arborescence plus classique...
L'idée peut être de décrémenter/d'incrémenter le poids de tout les éléments de l'intervalle à partir de la valeur du poids de celle insérée/supprimée par un autre update ou le même si c'est possible... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com