Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment remplacer mysql_insert_id() en PDO

Sujet résolu
    27 avril 2017 à 12:10:11

    Bonjour à tous,

    Je modifie mon code sql en PDO

    Pouvez vous me dire comment remplacer mysql_insert_id()

    <a href="http://localhost/babybroderie/membres/activer_compte_utilisateur.php?id=' . mysql_insert_id() . '&membre_clef_activation=' . urlencode($cle). '">clique ici pour activer votre compte</a><br />


    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2017 à 12:27:52

      Est ce que pour vous si je fis cela se sera bon?

      						<a href="http://localhost/babybroderie/membres/activer_compte_utilisateur.php?id=' . lastInsertId() . '&membre_clef_activation=' . urlencode($cle). '">clique ici pour activer votre compte</a><br />
      

      Je ne peux pas tester maintenant.

      Merci

      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2017 à 12:37:30

        Est ce que tu peux aller lire la doc ?

        ++

        • Partager sur Facebook
        • Partager sur Twitter
          27 avril 2017 à 13:44:50

          christouphe a écrit:

          Est ce que tu peux aller lire la doc ?

          ++


          Oui j'ai lu

          De ce que j'ai compris avec mon code est que mysql_insert_id() ou lastInsertId() vont chercher l'id de l’utilisateur qui s'est inscrit.

          Mais je ne vois pas comment inclure lastInserId() dans monde code.

          J'ai noté cela sans grande conviction

          Merci pour votre aide

          -
          Edité par psgman80 27 avril 2017 à 13:51:03

          • Partager sur Facebook
          • Partager sur Twitter
            27 avril 2017 à 13:53:35

            Alors tu as mal lu ^^

            li l'exemple 38 tu verras déjà comment on s'en sert ;)

            ++

            -
            Edité par christouphe 27 avril 2017 à 13:54:40

            • Partager sur Facebook
            • Partager sur Twitter
              27 avril 2017 à 14:20:46

              En faite si j'ai bien compris cela va me retourné 0.

              Faut que je trouve le moyen pour aller chercher le dernier id auto incrémenté enregistré dans la BDD

              -
              Edité par psgman80 27 avril 2017 à 14:25:21

              • Partager sur Facebook
              • Partager sur Twitter
                27 avril 2017 à 14:44:52

                public string PDO::lastInsertId ([ string $name = NULL ] )

                C'est une fonction de la classe PDO, tu as donc besoin de renseigner ton objet PDO pour savoir quel id retourner.

                Les autres ont fait beaucoup d'effort pour essayer de t'amener sur la piste sans te mâcher le travail.

                Quand christouphe te conseillais de regarder l'exemple, il parlait de ces lignes ci :

                $dbh = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); 
                $stmt = $dbh->prepare("INSERT INTO test (name, email) VALUES(?,?)"); 
                $stmt->execute( array('user', 'user@example.com'));
                print $dbh->lastInsertId(); 

                Tu vois la différence avec ce que tu nous propose ? Surtout sur la dernière ligne.

                -
                Edité par Shonen17 27 avril 2017 à 14:45:46

                • Partager sur Facebook
                • Partager sur Twitter
                  27 avril 2017 à 14:59:16

                  Oui faut que je sorte une variable

                  J'ai fais cela

                  page inscription

                  $cle=md5(microtime(TRUE)*100000);
                  				
                  				$req = $bdd->prepare('INSERT INTO membres(nom, prenom, rue, code_postal, commune, mdp, email, naissance, membre_derniere_visite, membre_banni)
                  									VALUES(:nom, :prenom, :rue, :code_postal, :commune, :mdp, :email, :naissance, :membre_derniere_visite, :membre_banni)');
                                                     
                  				$req->execute(array(
                  						'nom' => $nom,
                  						'prenom' => $prenom,
                  						'rue' => $rue,
                  						'code_postal' => $code_postal,
                  						'commune' => $commune,
                  						'mdp' => $mdp,
                  						'email' => $email,
                  						'naissance' => $date_naissance,
                  						'membre_derniere_visite' => $membre_derniere_visite,
                  						'membre_banni' => $membre_banni
                  						));
                  
                  				$dernier_id = $bdd -> lastInsertId();
                  				
                  				echo 'Vous êtes bien inscrit !';
                  				
                  				if(inscription_mail($email, $nom, $mdp, $cle)) $sent = 'Un mail de confirmation vous a été envoyé.';
                  				else $sent = 'Un mail de confirmation devait être envoyé, mais son envoi a échoué, vous êtes cependant bien inscrit.';

                  page fonction

                  function inscription_mail($email, $nom, $mdp, $cle)
                  {
                  	$to = $email;
                  	$subject = 'Inscription sur BabyBroderie';
                  
                  $message = '<html>
                  					<head>
                  						<title></title>
                  						<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                  						<meta name="language" content="fr" />
                  					</head>
                  					
                  					<body>
                  						<div>Bienvenue sur le site de BabyBroderie !<br/>
                  						Pour valider votre inscription, merci de cliquer sur le lien suivant : 
                  						<a href="http://localhost/babybroderie/membres/activer_compte_utilisateur.php?id=' . $dernier_id . '&membre_clef_activation=' . urlencode($cle). '">clique ici pour activer votre compte</a><br />
                  						Vous avez complété une inscription avec l\'e-mail '.htmlspecialchars($email, ENT_QUOTES).' à l\'instant.<br/>
                  						Votre mot de passe est : '.htmlspecialchars($mdp, ENT_QUOTES).'.<br/>
                  						Veillez à le garder secret et à ne pas l\'oublier.<br/><br/>
                  						
                  						En vous remerciant.<br/><br/>
                  						Wembaster du site BabyBroderie.
                  					</body>
                  				</html>';
                  //headers principaux.
                  $headers  = 'MIME-Version: 1.0' . "\r\n";
                  $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
                  //headers supplémentaires
                  $headers .= 'From: "BABYBRODERIE" <webmaster@babybroderie.fr>' . "\r\n";
                  $headers .= 'Cci: "Duplicata" <carpentier-g@sfr.fr>' . "\r\n";
                  $headers .= 'Reply-To: "Membres" <membres@supersite.com>' . "\r\n";
                  
                  
                  $mail = mail($to, $subject, $message, $headers); //marche
                  
                  if($email) return true;
                  return false;
                  }

                  J'ai cela comme erreur

                  Notice: Undefined variable: dernier_id in C:\Users\Geoffrey\Dropbox\Site internet\Babybroderie\includes\fonctions.php on line 199 Call Stack # Time Memory Function Location 1 0.0034 174056 {main}( ) ..\trait_inscription.php:0 2 0.0856 215216 inscription_mail( ) ..\trait_inscription.php:424

                  Merci pour votre aide

                  -
                  Edité par psgman80 27 avril 2017 à 22:23:54

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 avril 2017 à 10:02:58

                    T'es plus très loin ! Bien joué.

                    function inscription_mail($email, $nom, $mdp, $cle)

                    Il te manque juste ta variable $dernier_id ici. C'est normal qu'il ne la connaisse pas dans la fonction si tu ne lui envoie pas la variable.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 avril 2017 à 21:37:15

                      Merci cela fonctionne

                      -
                      Edité par psgman80 28 avril 2017 à 23:06:05

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Comment remplacer mysql_insert_id() en PDO

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown