|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 98 ![]() |
Bonjour à tous,
Je suis en train de coder un petit forum et j'ai donc une liste de catégorie qui se trouve dans une table (simplifier pour l'occasion) ci dessous : Code :
J'aimerai à partir de cette table, récupérer l'arborescence des catégories en partant de n'importe qu'elle autre, c'est à dire que si je demande à partir de 6 (HTML), je voudrais recevoir 6-4-2-1 (peu importe la forme, un traitement PHP n'est pas gênant). PS : L'intérêt de la chose est bien sur de connaitre ça uniquement en une seul requete, et non un foreach avec une requete par bouclage ! PS2 : Sinon j'avais pensé à un champ 'arborescence' en BDD qui prendrai donc pour 6 la valeur '4-2-1' mais je n'aime vraiment pas ...
__________________
KreatoO |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 529 ![]() |
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 98 ![]() |
J'ai déjà vu ce modèle auparavant et il me déplait particulièrement car les ID sont amené à consentement changer..
Je cherche à faire ça pour la réalisation d'un forum.. Et plus particulièrement de plusieurs forum (un champ 'id_forum' existe dans la table me permettant de connaitre à qui appartienne les catégories). Du coup, pour l'ajout d'une catégorie je vais être obligé de modifier la totalités de la table..
__________________
KreatoO |
|
|
00
|
|
|
#4 |
![]() ![]() |
Faux ! Ce qui change, ce sont les bornes gauche et droite. Rien ne t'empêche d'ajouter un ID auto-incrémenté qui sera invariable.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 98 ![]() |
Certe, mais ces bornes droites et gauches sont constamment en train de changer..
Comme j'ai plusieurs forum a gérer en même temps, le dernier de la liste changera à chaque fois qu'une catégorie est modifié...
__________________
KreatoO |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Si tu veux éviter cette solution, alors je te conseille de partir sur une solution en php, avec une fonction récursive, et de mettre éventuellement un système de cache(genre en mettant a jour ton cache en cas de modification des forums seulement ) Deja, as-tu une idée de la profondeur max de ton arbre (ou veux-tu absolument une profondeur potentiellement infinie ) ? Car si tu décides de limiter le nombre de niveau de ton arbre (vu que tu parles de "petit forum"), il y a des alternatives... Et aussi un ordre de grandeur du nombre de forum au total ? |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 98 ![]() |
Pour ce qui est de la profondeur, elle sera infini... Même si je penses que 3 ou 4 enfants sera déjà pas mal du tout !
Pour ce qui concerne du nombre de forum, je ne sais vraiment pas.. Tout ce que je sais c'est que plus j'en aurais plus je serais gagnant... Je pensais aussi ajouter un champ 'arborescence' à éditer lors des modifications, et je penses que je vais finir par faire ça, ne voyant aucunes autres solutions .. Je trouve que la solution proposé précédemment est très lourde en mise en place et lors des modifications pour peu de résultats..
__________________
KreatoO |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Les requêtes récursives n'existant pas sous MySQL, tu n'as malheureusement pas 36 solutions : soit mettre en place une structure arborescente, soit déléguer la récursivité à PHP. Ou encore changer de SGBD, par exemple pour PostgreSQL, qui gère les requêtes récursives... Mais là, ça dépend de ton hébergeur. ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com