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
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
2 réponses
Utilisateur anonyme
Modifié par le père. le 31/03/2014 à 16:26
Modifié par le père. le 31/03/2014 à 16:26
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.
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.
Utilisateur anonyme
31 mars 2014 à 08:44
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() ?
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() ?
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
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
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
Modifié par kari.kari le 31/03/2014 à 16:55
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 :)