IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupérer ID du dernier insert MYSQL


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 29
    Points
    29
    Par défaut Récupérer ID du dernier insert MYSQL
    Bonjour,

    Je me permet de vous contacter car je suis en train de faire un petit programme un PHP pour faire un inventaire de moulins et en fait quand j'ajoute un nouveau moulin dans ma table moulin ca marche bien mais j'ai besoin de récupérer l'ID de ce dernier ajout pour l'utiliser dans une table de liaison pour associer mon moulin à une commune mais j'ai des problèmes.....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    // AJOUT MOULIN
    	if ($action == add) {
     
    		//Vérification si CodeMoulin existe déja
    		try
    			{
    				$bdd = new PDO('mysql:host=localhost;dbname=inventaire;charset=utf8', 'USER', 'PASSWORD');
    			}
    		catch(Exception $e)
    			{
    					die('Erreur : '.$e->getMessage());
    			}
    		//
    		//On verifie si µCodeMoulin existe déja ou pas, si il existe alors AddError=1
    		//
    		$reponse = $bdd->query('SELECT CodeMoulin FROM Moulins');
     
    		foreach($reponse as $element)
    		{
    			$NewCode = $element[CodeMoulin];
    			if ($CodeMoulin == $NewCode) {
    				//echo "Erreur CodeMoulin déja existant";
    				$AddError="1";
    				//echo $element[CodeMoulin];
    			}
    		}
     
    		//Verifications
    		//Si CodeMoulin existe déja
    		if ($AddError == 1) {
    			echo "Erreur CodeMoulin déja existant";
    		}
    		elseif ($AddError == 2)	{
    			echo "Erreur 2";
    		}
    		//Sinon pas d'erreur
    		else {		
    			echo "Ajout Moulin";
    			//
    			//Ajout du moulin
    			//
    			$req = $bdd->prepare('INSERT INTO Moulins(NbrRVert, NbrRHori, TypeRoue, TypeMachine, Production, Tamisage, CourEau, DateConstruction, Lat, Lon, Informations, Etat, CodeMoulin, NomMoulin) VALUES(:NbrRVert, :NbrRHori, :TypeRoue, :TypeMachine, :Production, :Tamisage, :CourEau, :DateConstruction, :Lat, :Lon, :Informations, :Etat, :CodeMoulin, :NomMoulin)');
    			$req->execute(array(
    				'NbrRVert' => $NbrRVert,
    				'NbrRHori' => $NbrRHori,
    				'TypeRoue' => $TypeRoue,
    				'TypeMachine' => $TypeMachine,
    				'Production' => $Production,
    				'Tamisage' => $Tamisage,
    				'CourEau' => $CourEau,
    				'DateConstruction' => $DateConstruction,
    				'Lat' => $Lat,
    				'Lon' => $Lon,
    				'Informations' => $Informations,
    				'Etat' => $Etat,
    				'CodeMoulin' => $CodeMoulin,
    				'NomMoulin' => $NomMoulin
    			));
     
    			//Recupération de IDMoulin en fonction de CodeMoulin (qui est censé être unique)
    			//echo "Codemoulin:".$CodeMoulin;
    			//$requete="$bdd->query('SELECT IDMoulin FROM Moulins WHERE CodeMoulin=".$CodeMoulin.");";
     
    			//$reponse = $bdd->query('SELECT IDMoulin FROM Moulins WHERE CodeMoulin=11');
    			//$reponsee = $bdd->query('SELECT * FROM Moulins');
    			//echo $reponse;
    			//print_r ($reponsee);
     
     
     
    			//Ajout de l'IDCommune et IDMoulin dans la table CommuneMoulin
    		//	$req = $bdd->prepare('INSERT INTO CommuneMoulin(IDCommune, IDMoulin) VALUES(:IDCommune, :IDMoulin)');
    		//	$req->execute(array(
    		//		'IDCommune' => $IDCommune,
    		//		'IDMoulin' => $IDMoulin
    		//	));
     
     
    			echo 'Le Moulin a bien été ajouté !';
    			//header('Location: index.php'); 
    		}

    Comme vous pouvez le voir j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //Recupération de IDMoulin en fonction de CodeMoulin (qui est censé être unique)
    			//echo "Codemoulin:".$CodeMoulin;
    			$requete="$bdd->query('SELECT IDMoulin FROM Moulins WHERE CodeMoulin=".$CodeMoulin.");";
     
    			//$reponse = $bdd->query('SELECT IDMoulin FROM Moulins WHERE CodeMoulin=11');
    			//$reponse = $bdd->query('SELECT * FROM Moulins');
    			echo $requete;
    			print_r ($requete);
     
     
     
    			//Ajout de l'IDCommune et IDMoulin dans la table CommuneMoulin
    			$req = $bdd->prepare('INSERT INTO CommuneMoulin(IDCommune, IDMoulin) VALUES(:IDCommune, :IDMoulin)');
    			$req->execute(array(
    				'IDCommune' => $IDCommune,
    				'IDMoulin' => $IDMoulin
    			));
    Mais ça ne fonctionne pas, ça ne me retourne jamais rien.... (à part 'Le Moulin a bien été ajouté !')

    J'ai également essayé : SELECT LAST_INSERT_ID() FROM Moulins mais ca ne me retourne rien non plus et j'ai un peu de mal à comprendre pourquoi ca ne retourne rien.

    Quelqu'un a une idée ?

    Merci par avance

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Points : 242
    Points
    242

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par selmouadin Voir le message
    Merci mais j'ai essayé la syntaxe qu'ils marquent dans l'exemple et ca ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo $req->lastInsertId(); 
    //OU
    echo 'Last Insert ID: ' . pgsqlLastInsertId($req, $bdd);

    ça ne me retourne rien, j'ai l'impression qu'il ne veut pas exécuter de requete SQL aprés mon $req->execute(array(.....));


    J'ai fait dans un autre fichier php, une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php
    RecupID();
    function RecupID()
    {
    try
    				{
    					$bdd = new PDO('mysql:host=localhost;dbname=inventaire;charset=utf8', 'root', 'Total$2016');
    				}
    			catch(Exception $e)
    				{
    						die('Erreur : '.$e->getMessage());
    				}
    			$reponse = $bdd->query('SELECT IDMoulin FROM Moulins WHERE CodeMoulin=11');
     
    				//echo $reponse[0][0];
     
    				foreach($reponse as $element)
    				{
    					//print_r ($element);
    					$a=($element);
    				}
    				echo $a[0];
    }
     
    ?>
    qui fonctionne bien quand elle est à part mais quand je la met dans mon fichier php principal elle ne s'exécute pas....

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    c'est $bdd pas $req.

    Tu devrais veiller a afficher toutes les erreurs PHP quand tu developpes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 29
    Points
    29
    Par défaut
    En effet ça fonctionne....

    Comment faire pour afficher les erreurs dans PHP ? car je ne connais que la méthode qui sonsite à faire des echo et print_r un peu partout...

    un grand merci à vous

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand tu développes, dans ton php.ini tu dois avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting = E_ALL
    display_errors = On
    Et en production
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting = E_ALL
    display_errors = Off
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 29
    Points
    29
    Par défaut
    Merci mais je ne vois aucune différence si j'active les debugs....ils doivent arriver dans mon fichier error.log de paache2 ou alors sur ma page web ?

Discussions similaires

  1. [MySQL] Récupérer $_POST et insertion MySql
    Par hugo69 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2006, 21h23
  2. Récupérer les N derniers lignes
    Par arsenik7 dans le forum Oracle
    Réponses: 8
    Dernier message: 12/05/2006, 14h35
  3. Problèmede insert MySQL avec les DECIMAL
    Par SuperCed dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/04/2006, 18h04
  4. [vb/C#] Récupérer un id apres insertion
    Par blast078 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 13/04/2006, 22h59
  5. Problème sur requête insert mysql
    Par kcizth dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2006, 19h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo