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 :

Comment remplacer mysql_insert_id() en PDO


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Comment remplacer mysql_insert_id() en PDO
    Bonjour à tous,

    Je modifie mon code sql en PDO

    Pouvez vous me dire comment remplacer mysql_insert_id()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 />
    J'ai fais cela:

    Page trait-inscription
    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
    $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.php
    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
    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;
    }
    Voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( ! ) 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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    0/ COMPRENDRE LE MESSAGE D'ERREUR

    Il faut apprendre à lire correctement les messages d'erreur.

    ...Undefined variable: dernier_id in ...\includes\fonctions.php on line 199...
    1/ DONC :
    • dernier_id est indéfini...
    • on cherche dans le fichier fonctions.php
    • à la ligne 199


    2/ ON CHERCHE... et trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function inscription_mail($email, $nom, $mdp, $cle)
    {
    .......
    <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 />
    .......
    3/ ON EN DÉDUIT :

    • $dernier_id n'a pas été transmis à la fonction inscription_mail().


    4/ ON CORRIGE (dans la fonction, et dans l'appel de cette fonction) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inscription_mail($email, $nom, $mdp, $cle, $dernier_id)
    Dernière modification par Invité ; 24/05/2017 à 11h32.

  3. #3
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie avec $bdd->lastInsertId();
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  4. #4
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Ton erreur stipule que la variable $dernier_id n'est pas définie(transmise);
    Au niveau de
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $req->execute(array(....));
    tu oublis : au début de chaque champ ex c'est :nom et pas nom
    Essaye de le vérifier en faisant
    Code php : 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
     
    $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
    ));
    /**
     * Vérifier si $dernier_id et défini
     * 
     */
    $dernier_id = 0;
    print_r($dernier_id); // résultat attendu 0
    $dernier_id = 1;
    $dernier_id = $bdd->lastInsertId(); 
    print_r($dernier_id); // résultat attendu dernier id de l'insertion. s'il vaut 1, il y'a problème
    die();
    Si la dernière valeur de $dernier_id est # 1, alors tu eface le partie servant à deburger et là tu auras
    Code php : 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
     
    $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, $dernier_id)) $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.';
    et tu passes dernier_id en paramètre à
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     fonction inscription_mail(...){ ...}
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,

    Tu oublies de passer ton dernier id dans ta function

    Il manque donc un paramètre ($dernier_id) dans la page fonction.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function inscription_mail($email, $nom, $mdp, $cle,$dernier_id)
    {
    ......
     
    }

    @jreaux62 : sorry, j'ai pas bien lu ton post

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    @jreaux62 : sorry, j'ai pas bien lu ton post
    Tu n'es pas le seul !

  7. #7
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    please @jreaux62 I'm very sorry. Sèche tes larmes, ne pleure plus STP.
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

  8. #8
    Invité
    Invité(e)
    Par défaut
    LOL.
    J'ai mis à jour mon 1er message (avec plus d'explications).

    J'espère que c'est plus clair

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Ha oui mais non, j'avais mieux expliquer avant et du coup ça donne l'impression que je suis moins bon.....(vais supprimer la fonction edit)

  10. #10
    Invité
    Invité(e)
    Par défaut
    re-LOL

    L'important est que la réponse soit pertinente et bien comprise par l'intéressé !



    N.B. ...et c'est là qu'on se rend compte que la réponse n'a RIEN à voir avec la question ! (cf titre de la discussion) !

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/05/2005, 16h58
  2. Comment remplacer trop de "if" ?
    Par Clad3 dans le forum C++
    Réponses: 14
    Dernier message: 28/03/2005, 20h08
  3. Réponses: 5
    Dernier message: 25/01/2005, 14h26
  4. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

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