[SQL]
Résolu/Fermé
A voir également:
- [SQL]
- Récupération serveur sql - Télécharger - Gestion de données
- Sql query - Télécharger - Gestion de données
- Sql replace plusieurs valeurs - Forum Programmation
- Sql pix - Forum Python
- Delete cascade sql - Forum Programmation
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
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, ...)
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, ...)
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
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
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... :(
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
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 ?
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());