IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Gestion d'un arbre hiérarchique ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Gestion d'un arbre hiérarchique ?
    Bonjour à tous,

    Je souhaite utiliser le système "d'arbre hiérarchique" tel que décrit dans cet excellent - mais ancien - article : https://sqlpro.developpez.com/cours/arborescence/ sur une table existante, mais je ne comprend pas la logique nécessaire pour faire un update des colonnes BG(gauche) et BD(droite).

    Ma table est classique : ID - NOM - ID PARRAIN - BG - BD

    Les nœuds ("pères") ont un ID PARRAIN à 0 tandis que les feuilles ("enfants") ont un ID PARRAIN égal à l'ID de leur père. Bien entendu il y a plusieurs niveaux.

    En fouillant, j'ai trouvé une autre méthode décrite ici : https://www.mysqltutorial.org/mysql-...ncy-list-tree/ mais elle nécessite MySQL 8 alors que je suis limité à 4.9. sur mon serveur Infomaniak. Peut-être existe t'il une autre méthode, mais je ne l'ai pas trouvée.

    Pouvez vous m'aider ?
    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    je ne comprend pas la logique nécessaire pour faire un update des colonnes BG(gauche) et BD(droite)
    L'article explique le principe à l'aide de schémas section II. et de :
    on décale de deux unités tous les bords, droits ou gauches, sans distinction aucune, dont la valeur est supérieure ou égale à la borne droite du père visé par l'insertion.
    Une autre façon de voir les choses est de dire que l'intervalle du père visé par l'élément à insérer, grossit de deux unités pour absorber le nouveau fils et que cela conduit tous les bords situés à droite du père à un décalage de deux unités
    Relis bien tout cela.

    je suis limité à 4.9
    MySQL 5 date de ~2005
    Je ne suis même pas sûr que MySQL 4.9 ait existé (de mémoire on est passé quasiment de 3 à 5, 4 ayant été très peu utilisé), tu dois confondre avec autre chose, phpMyAdmin ?
    Fais un select version(); pour connaître la version du serveur.

    Les arbres bornés sont rapides à lire, mais plus difficiles à appréhender et à modifier. Le jeu n'en vaut peut-être pas la chandelle. Un modèle classique en

    member
    -----------
    id
    name
    parent_id (=> member.id)

    est peut-être suffisant. Tu peux reconstituer l'arbre en PHP ou avec une CTE récursive (MySQL 8).

  3. #3
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour et merci de ta réponse claire.
    Je vais lire et tenter de capter cet article et je reviens

    Pour la version tu as raison c'est PhpMyAdmin ! La SQL est 5.4

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    La SQL est 5.4
    La 5.4 n'est pas référencée parmi les archives => https://downloads.mysql.com/archives/community/
    La 5.5 date de 2009
    Tourner sur de si vieux serveurs ne permettra pas d'utiliser les derniers progrès

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Me suis gourré, voici ce que me donne version()

    5.7.30-log
    Pas bon ?

  6. #6
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Je reviens sur l'intervallaire de ma table...

    J'ai compris que je dois traiter chaque parrain (dont id_parrain = 0) séparément. Ok.
    Si je prends l'ID 1, un simple WHERE id_parrain=1 me donne tous les filleuls. Mais après, comment je descends dans l'arbre de chaque filleul pour l'update des bornes gauche et droite ? Une requête récursive en php ?

    Et si je traite le parrain 2 de la même façon, je vais me retrouver avec plusieurs BG et BD de valeur identique ?

    Ben je galère bien...

Discussions similaires

  1. Gestion de l'arbre des composant d'une vue
    Par bza88 dans le forum JSF
    Réponses: 6
    Dernier message: 21/07/2017, 19h01
  2. Arbres intervallaires - gestion de plusieurs arbres
    Par _Jnie_ dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/05/2015, 15h31
  3. Réponses: 0
    Dernier message: 11/05/2012, 15h16
  4. Gestion d'arbres par représentation intervallaire
    Par Djebel dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/10/2006, 17h28
  5. Gestion d'arbres par représentation intervallaire
    Par brice01 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/01/2006, 21h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo