Problème avec mysql_insert_id

Résolu/Fermé
kari.kari Messages postés 4 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 3 avril 2014 - 30 mars 2014 à 22:59
kari.kari Messages postés 4 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 3 avril 2014 - 31 mars 2014 à 16:53
bonjour,
bon voilà j'ai deux tables utilisateur et enseignant, l'enseignant est un utilisateur donc j'ai une clé étrangère dans la table enseignant pour référencer l'utilisateur. j'ai un formulaire pour ajouter un utilisateur, la moitié des informations récupérées par le formulaire sera insérée dans la table utilisateur et l'autre moitié dans table enseignant,
-je commence par insérer l'utilisateur,
-je récupère l'id AUTO INCRÉMENTÉ du dernier utilisateur inséré avec la fontion $res=mysql_insert_id,
-j'insère un enseignant en utilisant la valeur retournée par mysql_insert_id comme clé étrangère comme suit: mysql_query("insert into enseignant values ('','','','".$res."')");

QUAND J'affiche $res il m'affiche un résultat correcte donc mysql_insert_id marche bien, l'insertion d'un utilisateur marche mais LE PROBLEME C'EST QUE l'enseignant ne s'insère pas!!! pouvez vous m'aider SVP je bloooooque!

2 réponses

J'ai eu beaucoup de mal à reproduire ton problème, mon mysql détectait de nombreux autres problèmes en appliquant strictement les définitions de table et le code que tu as donnés. Entre autres pour des questions de colonne non définie et de non respect de la casse. Mais j'ai fini par reproduire ton problème.
Je l'ai résolu en ajoutant simplement mysql_query("SET AUTOCOMMIT = 1"); après le UNLOCK TABLES. Ne me demande pas pourquoi, je ne me suis jamais intéressé aux verrous.
1
kari.kari Messages postés 4 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 3 avril 2014
Modifié par kari.kari le 31/03/2014 à 16:55
ouiiii c'était ça le problème! j'ai essayé et ça marche! et moi avant de lire ton dernier message j'avais fait mysql_close() après UNLOCK TABLES et j'ai ouvert une nouvelle connexion avant la requête pour enseignant et ça réglait le probleme aussi!
au fait en faisant mysql_query("SET AUTOCOMMIT = 0") j'ai désactivé la validation automatique des requêtes donc pour que la requête pour enseignant soit validée il faut le faire manuellement en ajoutant mysql_query("COMMIT"); après la requête ou bien réactiver la validation automatique avec mysql_query("SET AUTOCOMMIT = 1")!

merciii beaucoup :)
0
Utilisateur anonyme
31 mars 2014 à 08:44
Bonjour

Peux-tu donner la définition de la table enseignant et le code que tu utilises pour l'insérer (et pas seulement la requête) ?
As-tu vérifié si tu n'aurais pas des champs NON NULL à initialiser ?
As-tu testé la présence d'une éventuelle erreur sur cette dernière requête avec mysql_error() ?
0
kari.kari Messages postés 4 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 3 avril 2014
31 mars 2014 à 14:31
Bonjour le père,
merci pour la réponse :)

voici la structure de mes table:

create table utilisateur(IDF_uti INT(255) PRIMARY KEY AUTO INCREMENT, nom varchar(20) not null,
prenom varchar(20) not null,
adresse varchar(200) not null, mail varchar(50) not null, login varchar(20),
motPasse varchar(20) not null);

CREATE TABLE enseignant(idf_ens INT(255) PRIMARY KEY AUTO INCREMENT, grade varchar(20), profile varchar(20));


Contraintes pour la table 'enseignant'

ALTER TABLE 'enseignant'
ADD CONSTRAINT 'fk_idfUti' FOREIGN KEY ('IDF_Uti') REFERENCES 'utilisateur' ('IDF_Uti') ON DELETE CASCADE ON UPDATE CASCADE;

et voilà mon code php:

<?php
if (isset($_POST) && !empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['add']) && !empty($_POST['mail']) && !empty($_POST['log']) && !empty($_POST['pass']) && !empty($_POST['grade']) && !empty($_POST['profilen']))
{ extract($_POST);
mysql_connect('localhost','root','PMsyeyfYQ56EvNw5');
mysql_select_db('pfe');
mysql_query("LOCK TABLES utilisateur WRITE");
mysql_query("SET AUTOCOMMIT = 0");
mysql_query("insert into Utilisateur values('','".$_POST['nom']."','".$_POST['prenom']."', '".$_POST['add']."', '".$_POST['mail']."', '".$_POST['log']."', '".md5($_POST['pass'])."')");
$mysql_id=mysql_insert_id();
mysql_query("COMMIT");
mysql_query("UNLOCK TABLES");
echo $mysql_id;
$sql="insert into enseignant values('','".$_POST['grade']."','".$_POST['profilen']."','".$mysql_id."')";
$req=mysql_query($sql)
or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo 'utilisateur ajouté';
}
else echo 'vous avez oublié de remplir un champ';
?>
merci de m'aider
0