Jump to content
Sign in to follow this  
Guest stone

Représentation d'arborescence en PHP depuis MySQL

Rate this topic

Recommended Posts

Guest stone

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

Share this post


Link to post
Share on other sites

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 :P ) : 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 :boude: donc je n'ai jamais testé pour des projet autre que des simples tests.

Edited by TheRec

Share this post


Link to post
Share on other sites
Guest stone

Terrible, merci beaucoup :yoot: 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 :)

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

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 )

Edited by TheRec

Share this post


Link to post
Share on other sites

Bonjour,

La classe inacessible ... fichier introuvable ...

ou puis je la telecharger ?

cordialement

Sebastien

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...