Guest stone Posté 29 Mai 2005 Posté 29 Mai 2005 salut, voilà j'utilise une représentation par intervalle pour représenter une arborescence de dossiers sur ma base de données : Le lien vers un tutoriel de la représentation intervallaire de l'arborescence est ici Tout ce passe bien et cette représentation me facilite grandement le travail. Mon seul problème est de représenter mon arborescence depuis la racine, par exemple : racine ----élémentfils --------elementfils --------elementfils ----------------elementfils ----élémentfils --------elementfils ----élémentfils Est-ce que quelqu'un a déjà été confronté à ce genre d'algo ?? Merci d'avance
TheRec Posté 29 Mai 2005 Posté 29 Mai 2005 (modifié) Oui, mais je ne le connaissais pas sous ce nom ... Je connaissais cette technique sous le nom de "Nested Sets" (Sets imbriqués, traduction sommaire). C'est à mon avis la plus "performante" Personnellement j'ai utilisé cette collection de fonctions (ce n'est pas un class) PHP développée par un professeur suisse (si, si, je le dis parce que je suis suisse ) : http://www.edutech.ch/contribution/nstrees/index.php J'ai pas mal modifié ces fonctions... déjà j'en ai fait une class ce qui facilite beaucoup son utilisation. Mais de base sans modifications elle marche très bien et comme je n'ai pas demandé l'accord de ce professeur je ne souhaite pas la poster ici, désolé. Toutefois ton problème est réglé dans avec ceci, une fonction nommée "nstWalkPreorder" qui permet de parcourir l'arbre pas à pas et perme de connaître le niveau du noeud en cours et de créer ta liste avec par exemple : echo str_repeat("-", $level*4)."<br/>\n"; Pour arriver au résultat que tu souhaites. Par contre, j'ai planché quelques temps sur une solution "simple" pour utiliser des unordered list (<ul>, <li>, ...) HTML pour afficher une arborescence (nombre de niveaux illimité) et je n'ai pas de solution, si quelqu'un s'est confronté au même problème ou à une solution qu'il me fasse signe *EDIT* Petit complément, si tu as accès à PEAR sur ton serveur web, tu peux également utiliser ce module : http://pear.php.net/package/DB_NestedSet Il fonctionne très bien, mais je n'ai malheureusement pas accès a PEAR en production donc je n'ai jamais testé pour des projet autre que des simples tests. Modifié 29 Mai 2005 par TheRec
Guest stone Posté 30 Mai 2005 Posté 30 Mai 2005 Terrible, merci beaucoup je venais de découvrir ce modèle de représentation et je n'avais pas d'idées sur la façon de le représenter. Encore merci. sinon la librairie est sous licence GPL tu peux donc montrer ta classe à ceux qui en auront besoin : License: the nstrees library is available under the terms fo the GNU public license GPL. Je te remercie beaucoup pour ton aide
TheRec Posté 30 Mai 2005 Posté 30 Mai 2005 Ouais... je vais d'abord la proposer au professeur si ça l'intéresse, j'ai rajouté/modifié 2-3 fonctions genre Suppression d'un noeud en désimbriquant ses enfant (dans les fonctions de base les enfants étaient tous supprimé). Et j'ai rajouté une bonne dose de commentaires, parce que s'était à peu près le desert de Gobi de ce côté là, dès que j'ai une réponse de sa part je viendrais poster des nouvelles ici
TheRec Posté 6 Juin 2005 Posté 6 Juin 2005 (modifié) Bonjour, j'ai reçu une réponse du créateur de cette librairie et il ne voit pas d'objection à la publication de "ma" class donc voilà : http://www.hexadec.ch/hexalab/2006-06-01/3-nested-sets/ En espérant que cela vous sera utile, personnellement je m'en sers très souvent. (J'ai essayé le [ codebox ] ... mais toute l'identation est "effacée" :S et le [ code ] est trop long ) Modifié 5 Octobre 2006 par TheRec
scramatte Posté 5 Octobre 2006 Posté 5 Octobre 2006 Bonjour, La classe inacessible ... fichier introuvable ... ou puis je la telecharger ? cordialement Sebastien
TheRec Posté 5 Octobre 2006 Posté 5 Octobre 2006 Bonsoir, Effectivement le lien a changé depuis et je n'ai pas pensé à le mettre à jour ici. Merci pour ton courriel Voilà le nouveau lien : http://www.hexadec.ch/hexalab/2006-06-01/3-nested-sets/ Tu trouveras le lien de téléchargement dans l'article sur mon blog. Bonne continuation et si tu y apportes des améliorations n'hésite pas à me le dire, je serai heureux de les découvrir
froidure_nicolas Posté 6 Octobre 2006 Posté 6 Octobre 2006 J'utilise aussi cette arborescence pour ElitWork, c'est vrai que c'est pas mal, par contre, un petit problème est qu'il n'y a pas possibilité de créer une catégorie qui soit fille de deux autres...
Spidetra Posté 7 Octobre 2006 Posté 7 Octobre 2006 une des solutions est la création d'un champ related dans ta table. sous une catégorie donnée tu affiches - les catégories filles - les catégories related
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant