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 :

Suppression récursive d'éléments dans une table [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut Suppression récursive d'éléments dans une table
    Bonjour!

    Nous avons une table contenant des elements et un nombre potentiellement infini de sous-elements.
    Nous vroudrion supprimer a la fois l'element et ses sous-elements pour un id donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Parent1
         Enfant1
            Sous-enfant1-1
            Sous-enfant1-2
         Enfant2
            Sous-enfant2-1
         Enfant3
            ...
    Parent2
          ...
    la table est construite ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id
    nom
    id_parent // l'id du parent direct (Enfant1 pour Sous-enfant1-1 et 1-2)
    id_root // l'id du parent le plus haut (Parent1 pour toute son arborescence)
    Par exemple, si nous voulons supprimer Parent1, il faudrais supprimer enfant1 et deux ainsi que leurs sous-enfants.

    Comment faire ca simplement en php ?

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    la solution la plus simple a mon avis est d'ajouter une une contrainte a la table
    en question. Une contrainte du genre on delete cascade. Comme ça en cas de suppression, les enregistrements fils seront supprimés automatique.
    PS: c'est une solution non php mais plutot niveau base de donnée
    je pars sur le principe que la base de données à ete contruites proprement

  3. #3
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    d'accord avec toi ouatmad.
    En ce qui concerne la base de donnée la meme mal construite ca dois concerner une association unaire, et partant de la, le on delete cascade sera toujours possible je pense

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut
    Ok merci !
    J'ai regarde le fonctionnement de CASCADE, mais apparemment, ca ne fais que lier un parent a x enfant(s) d'une table associee.

    Comment faire si j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Parent
         Fils1
             Fils2 (de Fils1)
    Si je supprime Parent, je supprime Fils1, mais comment supprimer Fils2 ?

    Est-ce que c'est possible avec deux tables (parents/enfant) ? Et comment la construire "proprement" ? Je voit pas trop quoi rajouter pour gerer une sorte de sous-fils infinis...

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Par défaut
    En théorie avec on "on delete cascade" si tu supprimes le parent alors tous les enfants (et même les enfants des enfants) doivent être supprimés

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut
    oui, si aux enfants je leur donne comme lien le parent, mais a ce moment je ne pourrais pas supprimer un enfant (Fils1 dans mon exemple) et ses enfants (Fils2) ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb Insertion d'éléments dans une table avec mySql++
    Par donkeyquote dans le forum C++
    Réponses: 1
    Dernier message: 24/02/2008, 00h39
  2. Réponses: 1
    Dernier message: 22/01/2008, 16h58
  3. insérer pleins d'éléments dans une table
    Par cyrano_de_bergerac dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/11/2007, 15h51
  4. suppression des caratères spéciaux dans une table
    Par syl221 dans le forum Access
    Réponses: 6
    Dernier message: 31/08/2005, 09h20
  5. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50

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