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 :

Échec d'insertion dans deux tables simultanément [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2013
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 125
    Par défaut Échec d'insertion dans deux tables simultanément
    Bonjour tout le monde,

    Le code suivant permet d'insérer dans deux tables simultanément (table1, table2).

    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
     
    //requête permettant l'insertion dans table1, la clé primaire est ID (Non Auto-incrémenté)
    $insertSQL = sprintf("INSERT INTO table1 (NUM, NOTES, EXPENSES, CURRENCY, CONTACT) VALUES (%s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['NUM'], "text"),
                           GetSQLValueString($_POST['NOTES'], "text"),
                           GetSQLValueString($_POST['EXPENSES'], "double"),
                           GetSQLValueString($_POST['CURRENCY'], "text"),
                           GetSQLValueString($_POST['_CONTACT'], "text"));
    mysql_select_db($database_procreativ, $procreativ);
    $Result1 = mysql_query($insertSQL, $procreativ) or die(mysql_error());
     
    // $a contient les valeurs d'un liste déroulante multiple  
    $a=$_POST['USER_ID']; 
     
    //requête permettant l'insertion dans table2, la clé primaire est ID_ASSIGH (Auto-incrémenté)
     
    foreach ($a as $key) {	
     
    $insertSQL2 = sprintf("INSERT INTO table2 (USER_ID, NUM) VALUES (%s, %s)",
                          GetSQLValueString($key, "int"),
                          GetSQLValueString($_POST[NUM], "int"));
      mysql_select_db($database_procreativ, $procreativ);
      $Result2 = mysql_query($insertSQL2, $procreativ) or die(mysql_error());
    }

    L'insertion se fait parfaitement mais quand j'ai rendu la clé primaire de la table AI, l'insertion à échoué dans table 2. Ci-dessous le code :
    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
     
    //requête permettant l'insertion dans table1, la clé primaire est ID (Non Auto-incrémenté)
    $insertSQL = sprintf("INSERT INTO table1 (NUM, NOTES, EXPENSES, CURRENCY, CONTACT) VALUES (%s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['NUM'], "text"),
                           GetSQLValueString($_POST['NOTES'], "text"),
                           GetSQLValueString($_POST['EXPENSES'], "double"),
                           GetSQLValueString($_POST['CURRENCY'], "text"),
                           GetSQLValueString($_POST['_CONTACT'], "text"));
    mysql_select_db($database_procreativ, $procreativ);
    $Result1 = mysql_query($insertSQL, $procreativ) or die(mysql_error());
     
    // $a contient les valeurs d'un liste déroulante multiple  
    $a=$_POST['USER_ID']; 
     
    //requête permettant l'insertion dans table2, la clé primaire est ID_ASSIGH (Auto-incrémenté)
     
    foreach ($a as $key) {	
     
    $insertSQL2 = sprintf("INSERT INTO table2 (USER_ID, NUM) VALUES (%s, LAST_INSERT_ID())",
                          GetSQLValueString($key, "int"));
     
      mysql_select_db($database_procreativ, $procreativ);
      $Result2 = mysql_query($insertSQL2, $procreativ) or die(mysql_error());
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $last_id = mysql_insert_id
    foreach ($a as $key) {	
    $insertSQL2 = sprintf("INSERT INTO table2 (USER_ID, NUM) VALUES (%s, %s)",
                          GetSQLValueString($key, "int"),
       GetSQLValueString($last_id, "int"),
    );
    Sinon tu recupères l'id qui vient d'être mis sur la deuxième requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2013
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 125
    Par défaut
    You are genious Sabotage

    Thanks a lot

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

Discussions similaires

  1. [MySQL] Insertion dans deux tables liées
    Par franxi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/06/2008, 21h22
  2. [MySQL] erreur dans la formulaire d'insertion dans deux table
    Par info_sara dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2008, 21h57
  3. Insert dans deux tables en meme temps?
    Par radzar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/04/2008, 11h33
  4. Insertion dans deux tables
    Par safiot85 dans le forum SQL
    Réponses: 13
    Dernier message: 05/12/2007, 23h14
  5. insertion dans deux tables
    Par bidule123456 dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/08/2007, 08h19

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