[SQL]
Résolu
My_jack
-
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.
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:
- [SQL]
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
6 réponses
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, ...)
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, ...)
Bonjour,
Tu dois d'abord récupérer la valeur du dernier ID_PROJECT crée, pour cela tu peux utiliser le code suivant
Ceci devrait mettre la valeur du dernier INSERT dans ta variable $id_project
A plus
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
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... :(
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... :(
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 ?
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 ?
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());
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());