[SQL]

Résolu
My_jack -  
 My_jack -
Salut,

Voila j'expose mon probleme, je suis en stage afin de creer un site en intranet. j'ai des petit soucis avec ma base de données.

Mes tables tournent autours de ma table 'projet' et je voudrais que mes autres tables recuperent mon 'id_projet' sachant que je suis sous phpmyadmin.

mon code d'insertion dans la table :

// on écrit les requêtes sql de la table professeur


$sql2 = "INSERT INTO professeur (id_professeur, nom_professeur, id_projet) VALUES('', '$nom_professeur', '$row')";
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());


// on écrit les requêtes sql de la table tuteur
$sql3 = "INSERT INTO tuteur (id_tuteur, nom_tuteur, email_tuteur, tel_tuteur, id_projet) VALUES('', '$nom_tuteur', '$email_tuteur', '$tel_tuteur', '$id_projet')";
mysql_query($sql3) or die('Erreur SQL !'.$sql3.'<br>'.mysql_error());

// on écrit les requêtes sql de la table entreprise

$sql4 = "INSERT INTO entreprise (id_entreprise, nom_entreprise, rue_entreprise, email_entreprise, tel_entreprise, fax_entreprise, id_tuteur) VALUES('', '$nom_entreprise', '$rue_entreprise', '$email_entreprise', '$tel_entreprise', '$fax_entreprise', '$id_tuteur')";
mysql_query($sql4) or die('Erreur SQL !'.$sql4.'<br>'.mysql_error());

// on écrit les requêtes sql de la table etudiant

$sql5 = "INSERT INTO etudiant (id_etudiant, nom_etudiant, prenom_etudiant, datenaissance, rue_etudiant, tel_etudiant, id_projet) VALUES('', '$nom_etudiant', '$prenom_etudiant', '$datenaissance', '$rue_etudiant', '$tel_etudiant', '$id_projet'')";
mysql_query($sql5) or die('Erreur SQL !'.$sql5.'<br>'.mysql_error());


// on écrit les requêtes sql de la table classe

$sql6 = "INSERT INTO classe (id_classe, libelle_classe, annee_classe, id_etudiant) VALUES('', '$libelle_classe', '$annee_classe', '$id_etudiant')";
mysql_query($sql6) or die('Erreur SQL !'.$sql6.'<br>'.mysql_error());

// on écrit les requêtes sql de la table representant
$sql7 = "INSERT INTO representant (id_representant, nom_representant, statut, id_projet) VALUES('', '$nom_representant', '$statut', '$id_projet'')";
mysql_query($sql7) or die('Erreur SQL !'.$sql7.'<br>'.mysql_error());


Les 'id_projet' sont a 0 alors que le veritable id_projet est a 1 en autoincrement.

EN l'attente d'une reponse merci.

6 réponses

dam75 Messages postés 1063 Date d'inscription   Statut Webmaster Dernière intervention   67
 
OK je vois le pb :)

La fonction Mysql_query ne renvoit PAS l'Id, mais une ressource de type Query ... ensuite, il faut "fetcher" le query via les fonctions mysql_fetch_array, ... (voir la doc php)

Par contre, dans ton cas tu as une solution bcp plus simple avec la fonction PHP mysql_insert_id() :
j'ai modifié aussi ta requete car il ne faut pas séter id_projet avec '')

$sql = "INSERT INTO projet (nom_projet, description_projet, competence_projet, datedebut_projet, datefin_projet) VALUES('$nom_projet', '$description_projet', '$competence_projet', '$datedebut_projet', '$datefin_projet')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$id_projet = mysql_insert_id();

La doc de cette fonction : https://www.php.net/mysql_insert_id

PS : c'est souvent pas une bonne idée de faire le mysql_query ... or die(...) parce que en cas de problème, ca affichera directement dans le navigateur pleins d'infos qui pourraient facilement permettre à qqun de pirater ton système ... (IP du serveur, utilisateur, requete, ...)
1
Christounet Messages postés 1264 Date d'inscription   Statut Membre Dernière intervention   1 392
 
Bonjour,

Tu dois d'abord récupérer la valeur du dernier ID_PROJECT crée, pour cela tu peux utiliser le code suivant
$id_projet = mysql_query("SELECT LAST_INSERT_ID()");

Ceci devrait mettre la valeur du dernier INSERT dans ta variable $id_project
A plus
0
My_jack
 
Merci bien,

j'ai essayer comme ca et sous plusieurs formes que j'ai trouvé sur le net, malheuresement ca ne fonctionne pas, mon id_projet reste a 0... :(
0
dam75 Messages postés 1063 Date d'inscription   Statut Webmaster Dernière intervention   67
 
Bonjour,

Tout dépend comment tu as récupéré la variable PHP $id_projet ...
Effectivement, si tu viens d'insérer dans la table projets, tu peux récupérer le dernier Id via LAST_INSERT_ID ...
Si ca n'est pas le cas (tu n'en parles pas dans ton message), alors il peut il y avoir pleins de raisons ... poste le code dans lequel tu récupère $id_projet qu'on essaye de comprendre ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
My_jack
 
ok,

Donc voila mon code avec l'insertion dans projet, la recuperation de l'id et l'utilisation de celui-ci dans la table professeur:

// on écrit les requêtes sql de la table projet
$sql = "INSERT INTO projet (id_projet, nom_projet, description_projet, competence_projet, datedebut_projet, datefin_projet) VALUES('', '$nom_projet', '$description_projet', '$competence_projet', '$datedebut_projet', '$datefin_projet')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

//récuperation de l'id_projet
$id_projet = "SELECT last_insert_id FROM projet";
mysql_query($id_projet) or die('Erreur SQL !'.$row.'<br>'.mysql_error());


// on écrit les requêtes sql de la table professeur
$sql2 = "INSERT INTO professeur (id_professeur, nom_professeur, id_projet) VALUES('', '$nom_professeur', '$id_projet')";
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());
0
My_jack
 
Ca fonctionne.

Merci beaucoup pour ton aide et la precision de celle-ci.
0