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

Arbre / Tree

5 réponses
Avatar
BLob
Je stocke un arbre en bdd avec une structure du type : id_node, id_parent,
label.

J'ai besoin d'effectuer des opérations sur cet arbre (rien que du classique)
:
- copier-coller d'un sous arbre (en interdisant les cycles), et sauvegarder
les choses en bdd
- couper-coller d'un sous arbre, et sauvegarder les choses en bdd
- supprimer un sous arbre + bdd
- exporter l'arbre ou un sous-arbre dans une string au format xml

Est-ce que vous avez des fonctions ou une classe à me conseiller ? ou au
moins une structure qui permette de bien manipuler l'arbre en php ? Ce que
j'ai trouvé n'est pas très performant (plusieurs parcours d'un tableau ou
d'un objet pour des opérations qui pourraient se faire avec un seul
passage).

Merci,

BLob

5 réponses

Avatar
FightClub!
Je stocke un arbre en bdd avec une structure du type : id_node, id_parent,
label.

J'ai besoin d'effectuer des opérations sur cet arbre (rien que du classique)
:
- copier-coller d'un sous arbre (en interdisant les cycles), et sauvegarder
les choses en bdd
- couper-coller d'un sous arbre, et sauvegarder les choses en bdd
- supprimer un sous arbre + bdd
- exporter l'arbre ou un sous-arbre dans une string au format xml


Je pense que pour des raisons de performances/ressources le plus
efficace serait de travailler directement les choses au format xml, il
existe de bonnes librairies pour cela.
Il existe aussi de bonnes librairies XML capables de charger/sauvegarder
dans la base de données, ou au pire ce sera les deux seules parties à
optimiser si le format actuel de la base est vraiment immuable.


Est-ce que vous avez des fonctions ou une classe à me conseiller ? ou au
moins une structure qui permette de bien manipuler l'arbre en php ? Ce que
j'ai trouvé n'est pas très performant (plusieurs parcours d'un tableau ou
d'un objet pour des opérations qui pourraient se faire avec un seul
passage).


un google sur le mot MiniXML si c'est du PHP4, ou simpleXML si c'est du
PHP5, ou XML_Tree (PEAR) pour les fans


--

http://SurveilleTonSite.sd2i.org
... un site web en panne ne sert à rien !

Avatar
loufoque
BLob a dit le 29/04/2005 à 19:17:

Je stocke un arbre en bdd avec une structure du type : id_node, id_parent,
label.


Ce n'est pas vraiment pertinent.

J'ai besoin d'effectuer des opérations sur cet arbre (rien que du classique)
:
- copier-coller d'un sous arbre (en interdisant les cycles), et sauvegarder
les choses en bdd
- couper-coller d'un sous arbre, et sauvegarder les choses en bdd
- supprimer un sous arbre + bdd
- exporter l'arbre ou un sous-arbre dans une string au format xml



Oulah, ta structure n'est alors vraiment pas du tout pertinente.

Utilise plutôt les Nested Sets.
Le seul article en français que je connaisse est celui-ci :
http://sql.developpez.com/arborescence/ (il est un peu imparfait à mon
goût).

Avatar
Ph. B.
BLob a demandé:
Je stocke un arbre en bdd avec une structure du type : id_node, id_parent,
label.

J'ai besoin d'effectuer des opérations sur cet arbre (rien que du classique)
:
- copier-coller d'un sous arbre (en interdisant les cycles), et sauvegarder
les choses en bdd
- couper-coller d'un sous arbre, et sauvegarder les choses en bdd
- supprimer un sous arbre + bdd
- exporter l'arbre ou un sous-arbre dans une string au format xml

Est-ce que vous avez des fonctions ou une classe à me conseiller ? ou au
moins une structure qui permette de bien manipuler l'arbre en php ? Ce que
j'ai trouvé n'est pas très performant (plusieurs parcours d'un tableau ou
d'un objet pour des opérations qui pourraient se faire avec un seul
passage).

Merci,

BLob


Bonjour,

Pour des raisons de performance, tu peux passer par une représentation
intervalaire de tes arbres. La représentation hiérarchique impose des
manipulations passant par des traitements récursifs, des auto-jointures,
bref tout ce qui consomme des ressources...
Mais plutot qu'un long discours, je te renvoie au site de Frédéric
Brouard qui a consacré tout un chapitre à ce sujet:
http://sql.developpez.com/arborescence/

C'est du Transact-Sql (langage de MsSql) mais facilement adaptable.
Tu devras également revoir quelque peu ton modèle de donnée où se
trouvent des tables d'éléments hierarchisés...

Bonne lecture,
--
Philippe.

Avatar
BLob
Merci pour le lien vers l'article de Frédéric Brouard !
Très intéressant et très bien rédigé !

BLob.



Bonjour,

Pour des raisons de performance, tu peux passer par une représentation
intervalaire de tes arbres. La représentation hiérarchique impose des
manipulations passant par des traitements récursifs, des auto-jointures,
bref tout ce qui consomme des ressources...
Mais plutot qu'un long discours, je te renvoie au site de Frédéric
Brouard qui a consacré tout un chapitre à ce sujet:
http://sql.developpez.com/arborescence/

C'est du Transact-Sql (langage de MsSql) mais facilement adaptable.
Tu devras également revoir quelque peu ton modèle de donnée où se
trouvent des tables d'éléments hierarchisés...

Bonne lecture,
--
Philippe.


Avatar
Olivier Miakinen
Bonjour,


Merci pour le lien vers l'article de Frédéric Brouard !
Très intéressant et très bien rédigé !


[ suivi par la citation intégrale de l'article d'origine ]


Si ton adresse est valide, tu as probablement déjà reçu des messages de
refus pour citation excessive, te donnant le lien vers la page
<http://www.giromini.org/usenet-fr/repondre.html>.

Mais si ton adresse est invalide comme je le suppose, non seulement tu
devrais lire <http://www.giromini.org/usenet-fr/repondre.html> pour
savoir comment citer correctement, mais tu peux aller voir aussi
<http://www.usenet-fr.net/fur/usenet/abus/adresses-antispam.html> afin
de ne pas faire spammer inutilement le domaine example.com qui est
réservé par l'IANA. En bref, tu peux commencer par changer ton « From »
en au lieu de .

[ suivi positionné ]

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.