Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2007, 15h25   #1
Membre à l'essai
 
Inscription : août 2006
Messages : 77
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 77
Points : 20
Points : 20
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 :
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 ?
zeugzeug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2007, 14h49   #2
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Il y a différente méthode :

soit :

Code :
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.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2007, 19h53   #3
Membre à l'essai
 
Inscription : août 2006
Messages : 77
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 77
Points : 20
Points : 20
Que réalise la fonction mysql_insert_id() ?
zeugzeug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2007, 20h03   #4
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
mysql_insert_id() Retourne l'identifiant généré par la requête précédente ayant fait un insert to
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2007, 21h00   #5
Membre à l'essai
 
Inscription : août 2006
Messages : 77
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 77
Points : 20
Points : 20
merci pour ton aide Iodan, cela fonctionne à merveille !
zeugzeug est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h50.


 
 
 
 
Partenaires

Hébergement Web