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 en cascade [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Suppression en cascade
    Bonjour !

    J'ai faire 2 tables dans ma base de données. Une table contient des évènements et une autre des flyers relatifs aux évènements. J'ai donc lié ces 2 tables.

    Mon problème c'est que j'aimerais pouvoir les supprimer en cascade. Sur le modèle de ma requête de sélection que voici qui fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = mysql_query("SELECT pk_age, date_age, event_age, lieu_age, prix_age, lien_age, pk_fly, width_fly, height_fly FROM tb_agenda, tb_flyers WHERE fk_fly_age = pk_fly ORDER BY date_age DESC");
    J'ai pondu ceci pour la suppression mais cela ne doit pas être juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req_supp = "DELETE FROM tb_agenda, tb_flyers WHERE fk_fly_age = pk_fly AND pk_age = '".$pk_a_supp."'";

  2. #2
    Membre chevronné Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par défaut
    Par une requete comme ça ce n'est pas possible.

    Par contre, en créant une clef etrangère avec l'option DELETE CASCADE ... le nom de l'option dit bien ce qu'elle veut dire.

    Mais avant de créer une clef etrangère, tu dois repenser tes tables. Les conditions de jointure ne sont pas très claires dans ta requête.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Comment ça pas très clair ? Je ne comprends pas...

  4. #4
    Membre chevronné Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par défaut
    Tu n'as pas de clause ON dans ta requête, on ne sait pas quels sont les colonnes permettant de relier les deux tables.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req_supp = "DELETE FROM tb_agenda, tb_flyers WHERE fk_fly_age = pk_fly AND pk_age = '".$pk_a_supp."'";
    A priori la syntaxe correcte est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req_supp = "DELETE FROM tb_agenda, tb_flyers using tb_agenda, tb_flyers  WHERE fk_fly_age = pk_fly AND pk_age = '".$pk_a_supp."'";

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par maxonyx Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req_supp = "DELETE FROM tb_agenda, tb_flyers WHERE fk_fly_age = pk_fly AND pk_age = '".$pk_a_supp."'";
    A priori la syntaxe correcte est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req_supp = "DELETE FROM tb_agenda, tb_flyers using tb_agenda, tb_flyers  WHERE fk_fly_age = pk_fly AND pk_age = '".$pk_a_supp."'";
    Cette syntaxe fonctionne très bien !! Merci !

  7. #7
    Membre chevronné Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ++++++++[>+++++++++<-]>.>+++++++[<++++>-]<+.+++
    ++++..+++.>++++[>++++++++<-]>.[-]<<++++++++.---
    -----.+++.------.--------.>++++++++[->++++<]>+.
    Ce code aussi fonctionne très bien. Es tu capable de dire pour autant ce qu'il fait ? Ce n'est pas le fonctionnement que j'ai remis en cause mais la clarté.

  8. #8
    Membre chevronné Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Par défaut
    slt...

    la syntaxe de maxonix est juste... c´est même dans la doc oficielle de mysql..

    http://dev.mysql.com/doc/refman/5.0/fr/delete.html

    Par contre, moi j´aurais fais plutot des remarques sur le select...

    Au lieu des "join" ... il fait encore la liaison des tables avec les "where"...

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

Discussions similaires

  1. Suppression en cascade
    Par music03 dans le forum Installation
    Réponses: 1
    Dernier message: 29/07/2005, 20h47
  2. suppression en cascade dans formulaire et sous-formulaire
    Par tooneygirl dans le forum Access
    Réponses: 7
    Dernier message: 20/06/2005, 14h17
  3. Requetes de suppression en cascade
    Par log2n dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 20/05/2005, 10h07
  4. Suppression en cascade
    Par log2n dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/05/2005, 20h33
  5. [debutant]suppression en cascade
    Par christophebmx dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 03/05/2005, 09h51

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