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 :

inserer des donnees dans 2 tables mais pas une sans l'autre [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut inserer des donnees dans 2 tables mais pas une sans l'autre
    Bonjour,

    je cherche un petit coup de main

    J'ai à inscrire des données dans 2 tables différentes mais s'il y a une erreur au niveau de l'insertion dans une table, alors j'aimerais ne pas faire d'insertion du tout avec un message d'erreur.


    pour l'instant, mon script se résume a ceci et je ne sais pas trop comment arranger ca


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $sql="INSERT INTO table1(colonne1 , colonne2 , colonne3, etc )
    	  VALUES ('" . $variable1 . "', '" . $variable2 . "', '" . $variable3 . "')" or die(mysql_error()); 
     
    			if (!mysql_query($sql)) {
    				die('Erreur - table1: ' . mysql_error());
    		}
     
    $sql2="INSERT INTO table2(colonne1 , colonne2 , colonne3, etc )
    	  VALUES ('" . $variable1 . "', '" . $variable2 . "', '" . $variable3 . "')" or die(mysql_error()); 
     
    			if (!mysql_query($sql2)) {
    				die('Erreur - table2: ' . mysql_error());
    		}
    merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Bonjour,

    Regardez du côté de mysql_affected_rows(), ça devrait faire l'affaire.

  3. #3
    Membre Expert
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
        $sql = "
            INSERT INTO table1(colonne1 , colonne2 , colonne3, etc )
            VALUES ('".$variable1."','".$variable2."', '".$variable3."')
        "; 
     
        if (!mysql_query($sql)) 
        {
            die('Erreur - table1: ' . mysql_error());
        }
        else
        {
            $id_insere = mysql_insert_id();    //prendre le dernier id inséré dans table 1
            $sql2 = "
                INSERT INTO table2(colonne1 , colonne2 , colonne3, etc )
                VALUES ('".$variable1."', '".$variable2."', '".$variable3."')
            "; 
     
            if (!mysql_query($sql2)) 
            {
                //suppression de l'neregistrement correspondant à l'id inséré dans table 1
                $sql_supprime_reg_table1 = "
                    DELETE FROM table1
                    WHERE id_table1 = '".$id_insere."'
                ";
                mysql_query($sql_supprime_reg_table1);
     
                die('Erreur - table2: ' . mysql_error());
            }
        }
    ?>
    Bien cordialement,

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    pourquoi ne pas tout simplement utiliser les transactions SQL si ton moteur de base est en innoDB ?

  5. #5
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
        $sql = "
            INSERT INTO table1(colonne1 , colonne2 , colonne3, etc )
            VALUES ('".$variable1."','".$variable2."', '".$variable3."')
        "; 
     
        if (!mysql_query($sql)) 
        {
            die('Erreur - table1: ' . mysql_error());
        }
        else
        {
            $id_insere = mysql_insert_id();    //prendre le dernier id inséré dans table 1
            $sql2 = "
                INSERT INTO table2(colonne1 , colonne2 , colonne3, etc )
                VALUES ('".$variable1."', '".$variable2."', '".$variable3."')
            "; 
     
            if (!mysql_query($sql2)) 
            {
                //suppression de l'neregistrement correspondant à l'id inséré dans table 1
                $sql_supprime_reg_table1 = "
                    DELETE FROM table1
                    WHERE id_table1 = '".$id_insere."'
                ";
                mysql_query($sql_supprime_reg_table1);
     
                die('Erreur - table2: ' . mysql_error());
            }
        }
    ?>
    Et bien oui, il fallait y penser

    merci

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

Discussions similaires

  1. Erreur lors d'un Load des donnee dans ma table
    Par mr.net dans le forum DB2
    Réponses: 1
    Dernier message: 15/09/2007, 07h09
  2. Réponses: 11
    Dernier message: 15/06/2007, 15h00
  3. [Mysql] Grouper des données dans 2 tables différentes
    Par jey350 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/11/2006, 11h02
  4. Réponses: 2
    Dernier message: 17/10/2006, 11h25
  5. Réponses: 18
    Dernier message: 26/07/2006, 14h51

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