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

SQL Procédural MySQL Discussion :

Insertion de données dans différentes tables.


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 77
    Par défaut Insertion de données dans différentes tables.
    Bonjour,

    Je réalise une base de données de stages d'étudiants et j'ai créé les 4 bases suivantes : etudiant (avec ID en clé primaire auto-incrémenté), stage1a, stage2a et enfin stage 3a.
    J'ai créé également une page pour l'insertion de nouvelles données dans ma base.
    Voici un extrait du code que j'utilise pour cette page :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
     $insertSQL = sprintf("INSERT INTO etudiant (nom, prenom, promotion, mail, tel, info) VALUES (%s, %s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['nom'], "text"),
                           GetSQLValueString($_POST['prenom'], "text"),
                           GetSQLValueString($_POST['promotion'], "text"),
                           GetSQLValueString($_POST['mail'], "text"),
                           GetSQLValueString($_POST['tel'], "text"),
                           GetSQLValueString($_POST['info'], "text"));
     
      mysql_select_db($database_ConnexionStages, $ConnexionStages);
      $Result1 = mysql_query($insertSQL, $ConnexionStages) or die(mysql_error());
     
      $insertSQL = sprintf("INSERT INTO stage1a (societe, adresse, ville, departement, pays, tel, fax, datedebut, datefin, maitre, theme, tuteur, confidentialite, info) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ",
                           GetSQLValueString($_POST['societe1A'], "text"),
                           GetSQLValueString($_POST['adresse1A'], "text"),
                           GetSQLValueString($_POST['ville1A'], "text"),
                           GetSQLValueString($_POST['dep1A'], "text"),
                           GetSQLValueString($_POST['pays1A'], "text"),
                           GetSQLValueString($_POST['tel1A'], "text"),
                           GetSQLValueString($_POST['fax1A'], "text"),
                           GetSQLValueString($_POST['datedebut1A'], "text"),
                           GetSQLValueString($_POST['datefin1A'], "text"),
                           GetSQLValueString($_POST['maitre1A'], "text"),
                           GetSQLValueString($_POST['theme1A'], "text"),
                           GetSQLValueString($_POST['tuteur1A'], "text"),
                           GetSQLValueString($_POST['confidentialite1A'], "text"),
                           GetSQLValueString($_POST['info1A'], "text"));
    Dans mes bases stages j'ai une ligne etudiantID et j'aimerais que lors de l'insertion d'une donnée cette ligne prenne la valeur de l'ID nouvellement incrémenté de la table etudiant.
    On m'a parlé de la fonction LAST_INSERT_ID(), pourriez-vous me dire comment l'utiliser dans mon code ?

  2. #2
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Il y a différente méthode :

    soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysql_select_db($database_ConnexionStages, $ConnexionStages);
      $Result1 = mysql_query($insertSQL, $ConnexionStages) OR die(mysql_error());
       $increment=mysql_insert_id();           
      $insertSQL = sprintf("INSERT INTO stage1a (societe, adresse, ville, departement, pays, tel, fax, datedebut, datefin, maitre, theme, tuteur, confidentialite, info) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ",
    soit :

    LAST_INSERT_ID() placé directement au bon endroit dans ton values de stage1a. Mais il manque la notion d'étudiant dans stage1a.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 77
    Par défaut
    Que réalise la fonction mysql_insert_id() ?

  4. #4
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    mysql_insert_id() Retourne l'identifiant généré par la requête précédente ayant fait un insert to

  5. #5
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 77
    Par défaut
    merci pour ton aide Iodan, cela fonctionne à merveille !

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

Discussions similaires

  1. [MySQL] PHP-MySQL: Insertion de donnée dans une table vide
    Par jrosenzw dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/03/2009, 02h11
  2. Insertion de données dans 2 tables différentes.
    Par anthony_rexis dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/07/2007, 10h29
  3. insertion de donnée dans une table (2 bd)
    Par robert_trudel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/01/2007, 17h41
  4. Réponses: 5
    Dernier message: 26/01/2007, 08h11
  5. Réponses: 7
    Dernier message: 12/10/2004, 16h43

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