[SQL]

Résolu/Fermé
My_jack - 4 juin 2009 à 16:03
 My_jack - 5 juin 2009 à 10:14
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.
A voir également:

6 réponses

dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
5 juin 2009 à 10:04
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 mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 383
4 juin 2009 à 16:17
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
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 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
5 juin 2009 à 09:28
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
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
Ca fonctionne.

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