Partage
  • Partager sur Facebook
  • Partager sur Twitter

pb avec LastInsertId

    17 novembre 2017 à 15:34:24

    Bonjour à tous,

    Je suis débutante et bloquée dans mon formulaire d'inscription !

    Depuis la première page du formulaire, l'utilisateur selon son genre est dirigé vers la page male ou female où il fera un choix entre 2 images pour être dirigé sur une 3ème page. Mon souci sous phpmyadmin : ma 1ère table est correctement remplie, la 2ème "male" ne contient pas les données. Je suppose que mon problème vient de LastInsertId. Voici la page "male" :

    <?php

    session_start();

    $userID=$req->lastInsertId();

    include('config.php');

        if(ISSET($_POST['m_a']))

    {

    $m_a = $_POST['m_a'];

    $req = $conn->prepare('INSERT INTO male (m_a) VALUES (:m_a)');

    $req->bindParam(':m_a' , $m_a);

    $req->execute();

    if(!empty($m_a) )

    {

    }else{}}

    $_SESSION['male'] = $_POST['male'];

    $m_a = $_POST['m_a'];

    header('Location: male2.php');

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

            <title> inscription homme</title>

    <meta name="keywords" content=" inscription"/>

    <meta name="robots" content="index, follow"/>

    <meta name="viewport" content="width=device-width; initial-scale=1.0"/>

    <link rel="icon" href="images/favicond.ico" />

    <!-- CSS -->

    <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,600italic,300|Open+Sans+Condensed:300&subset=latin,latin-ext' rel='stylesheet' type='text/css'/>

    <link rel="stylesheet" type="text/css" href="css/styles.css" />

    </head>

    <body>

    <div class="block page">

    <form id="form" action="male1.php" method="post">

    <p align="center">

    <?php if (isset($_POST['radio']))   // if ANY of the options was checked

    {echo htmlentities($_POST['radio'], ENT_QUOTES, 'UTF-8');} ?>

    <input type="radio" name="m_a" id="1" class="input-hidden" value="1"  >

    <label for="1">  <img src="images/male.jpg" alt="homme" /></label>

    <input   type="radio" name="m_a"   id="2" class="input-hidden" value="2" >

    <label for="2">  <img src="images/female.jpg" alt="femme" /></label>

    <br />

    <input type="hidden" name="id" value="id" />

    <input type="submit" name="submit" value="OK" style="cursor:pointer; background-color:#50ED03; width:250px; font-size:14px; font-style:normal; color:#FFFFFF"  />

    </p>

    </form>

    </div>

    </body>

    </html>


    merci pour votre aide


    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2017 à 15:35:48

      Bonjour,

      Utilise le bouton </> pour insérer ton code.

      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2017 à 15:37:34

        <?php
        session_start();
        $userID=$req->lastInsertId();
        
        include('config.php');
        
            if(ISSET($_POST['m_a']))
        {
        
        $m_a = $_POST['m_a'];
        
        $req = $conn->prepare('INSERT INTO male (m_a) VALUES (:m_a)');
        
        $req->bindParam(':m_a' , $m_a);
        
        $req->execute();
        
        
        if(!empty($m_a) )
        {
        
        }else{}}
        
        $_SESSION['male'] = $_POST['male'];
        
        $m_a = $_POST['m_a'];
        
        header('Location: male2.php');
        
        
        ?>
        
        
        
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        
        
        
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                
                <title> inscription homme</title>
        
        <meta name="keywords" content=" inscription"/>
        <meta name="robots" content="index, follow"/>
        <meta name="viewport" content="width=device-width; initial-scale=1.0"/>
        <link rel="icon" href="images/favicond.ico" />
        
        <!-- CSS -->
        <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,600italic,300|Open+Sans+Condensed:300&subset=latin,latin-ext' rel='stylesheet' type='text/css'/>
        
        <link rel="stylesheet" type="text/css" href="css/styles.css" />
                
        </head>
        
        <body>
        
        
        <div class="block page">
        
        <form id="form" action="male1.php" method="post">
        
        <p align="center">
        
        <?php if (isset($_POST['radio']))   // if ANY of the options was checked
        {echo htmlentities($_POST['radio'], ENT_QUOTES, 'UTF-8');} ?>
        
        
          
        <input type="radio" name="m_a" id="1" class="input-hidden" value="1"  >
        <label for="1">  <img src="images/male.jpg" alt="homme" /></label>
        
        <input   type="radio" name="m_a"   id="2" class="input-hidden" value="2" >
        <label for="2">  <img src="images/female.jpg" alt="femme" /></label>
        <br />
        
        <input type="hidden" name="id" value="id" />
        
        <input type="submit" name="submit" value="OK" style="cursor:pointer; background-color:#50ED03; width:250px; font-size:14px; font-style:normal; color:#FFFFFF"  />
          
        </p>
        
        </form>
        
        </div>
        
        </body>
        </html>
        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2017 à 15:43:36

          Je ne comprends pas bien ce que tu veux faire avec cette partie :

           
          if(!empty($m_a) )
          {
           
          }else{}}



          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2017 à 15:46:13

            Salut,

            Il y a déjà un problème ligne 3:

            <?php
                session_start();
                $userID=$req->lastInsertId();

            Sais-tu ce que cela veut dire ? (oui je sais que tu es débutante ;) )

            ++

            • Partager sur Facebook
            • Partager sur Twitter
              17 novembre 2017 à 15:55:33

              Christouphe, en fait je prend l'ID de ma table user pour le retrouver dans ma table male. Voilà :)

              Philodick, si l'une des 2 images a été sélectionnée, l'utilisateur est envoyé vers la 3ème page du formulaire

              -
              Edité par VeGUE 17 novembre 2017 à 16:00:59

              • Partager sur Facebook
              • Partager sur Twitter
                17 novembre 2017 à 16:02:27

                Si c'est le début de ton script, cela veut dire qu'avant ce script il y a eu forcément un INSERT en base, sinon ça va planter... Et encore je ne suis pas sûr ce que ça fonctionne.

                ++

                • Partager sur Facebook
                • Partager sur Twitter
                  17 novembre 2017 à 16:08:43

                  Je traduis en clair tes lignes 19 à 22 :

                  Si la variable $m_a n'est pas vide on ne fait rien.

                  Si elle est vide, on ne fait rien non plus.

                  -
                  Edité par philodick 17 novembre 2017 à 16:09:02

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 novembre 2017 à 16:10:08

                    philodick a écrit:

                    Je traduis en clair tes lignes 19 à 22 :

                    Si la variable $m_a n'est pas vide on ne fait rien.

                    Si elle est vide, on ne fait rien non plus.

                    -
                    Edité par philodick il y a moins de 30s


                    ça c'est moi le WE ^^

                    ++

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 novembre 2017 à 16:11:30

                      Oui Christouphe, voici ma 1ere page de formulaire :

                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                      <html xmlns="http://www.w3.org/1999/xhtml">
                      
                      <head>
                              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                              
                              <title> inscription</title>
                      
                      <meta name="keywords" content=" inscription"/>
                      <meta name="robots" content="index, follow"/>
                      <meta name="viewport" content="width=device-width; initial-scale=1.0"/>
                      <link rel="icon" href="images/favicond.ico" />
                      
                      <!-- CSS -->
                      <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,600italic,300|Open+Sans+Condensed:300&subset=latin,latin-ext' rel='stylesheet' type='text/css'/>
                      
                      <link rel="stylesheet" type="text/css" href="css/styles.css" />
                              
                      </head>
                      
                      <body>
                      
                      
                      <?php
                      include('config.php');
                      
                      
                          if(ISSET($_POST['submit']))
                      {
                      
                      $username =   $_POST['username'];
                      $bdate =   $_POST['bday'];
                      $password = $_POST['password'];
                      $password = hash("sha256", $password);
                      $email = $_POST['email'];
                      $gender = $_POST['gender'];
                      $adult = $_POST['adult'];
                      $cgu = $_POST['cgu'];
                      
                      
                      
                      $req = $conn->prepare('INSERT INTO users (username, bdate, password, email, gender, adult, cgu) VALUES (:username, :bdate, :password, :email, :gender, :adult, :cgu)');
                      
                      $req->bindParam(':username' , $username);
                      $req->bindParam(':bdate' , $bdate);
                      $req->bindParam(':password' , $password);
                      $req->bindParam(':email' , $email);
                      $req->bindParam(':gender' , $gender);
                      $req->bindParam(':adult' , $adult);
                      $req->bindParam(':cgu' , $cgu);
                      
                      $req->execute();
                      
                      
                      if(!empty($username) && !empty($password))
                      {
                      
                      }else{
                      ?>
                      
                      
                      <b>Prénom ou mot de passe vide !</b>
                      
                      
                      <?php
                      }
                      
                      
                      if(empty($username) && empty($password))
                      {
                      
                      
                      }else{
                      
                      
                      session_start();
                      $_SESSION['users'] = $_POST['users'];
                      
                      $gender = $_POST['gender'];
                      
                      if ($gender=="male" ) header('Location: male1.php'); 
                      if ($gender=="female" ) header('Location: female1.php'); 
                      
                      
                      }
                      
                      }
                      
                      ?>
                      
                      <div class="block page">
                      
                          <form id="form" action="accueil.php" method="post">
                      
                            
                      <p>
                          <input type="text" name="username" value="Prénom" onfocus="if(this.value=='Prénom')this.value='';" onblur="if(this.value=='')this.value='Prénom';" />
                      </p>
                      
                      <p>Date de naissance<br />
                      <?php if(isset($_POST['bdate'])){echo htmlentities($_POST['bdate'], ENT_QUOTES, 'UTF-8');} ?>
                        <input type="date" name="bday" value="<?php echo $bdate ?>"/>
                      </p>
                      <p>
                                  <input type="text" name="password" value="Mot de passe 6 caract&egrave;res min" onfocus="if(this.value=='Mot de passe 6 caract&egrave;res min')this.value='';" onblur="if(this.value=='')this.value='Mot de passe 6 caract&egrave;res min';" />
                      </p>
                      
                      <p> 
                                  <input type="text" name="passverif" value="Confirmer mot de passe" onfocus="if(this.value=='Confirmer mot de passe')this.value='';" onblur="if(this.value=='')this.value='Confirmer mot de passe';" />   
                      </p>
                      
                      <p> 
                                  
                      <input type="text" name="email" value="email" onfocus="if(this.value=='email')this.value='';" onblur="if(this.value=='')this.value='email';" />
                      </p>
                      
                       <p align="center">Qui êtes-vous ?<br />
                      
                      <?php if (isset($_POST['radio']))   // if ANY of the options was checked
                      {echo htmlentities($_POST['radio'], ENT_QUOTES, 'UTF-8');} ?>
                      
                        
                      <input type="radio" name="gender" id="male" class="input-hidden" value="male"/>
                      <label for="male">  <img src="images/male.jpg" alt="homme" /></label>
                      
                      <input   type="radio" name="gender"   id="female" class="input-hidden" value="female"/>
                      <label for="female">  <img src="images/female.jpg" alt="femme" /></label>
                      
                      </p>
                      
                      
                      <span style="color:#0000b3; font-size:10px; font-style:italic">
                      <?php if (isset($_POST['checkbox']))   // if ANY of the options was checked
                      {echo htmlentities($_POST['checkbox'], ENT_QUOTES, 'UTF-8');}  ?> 
                      <input name="adult" type="checkbox" value="Ok"  />Je certifie être majeur<br />
                      <input name="cgu" type="checkbox" value="Ok" />j'ai lu et j'accepte <a href="cgu.php">les CGU</a>, la politique sur la vie privée et la charte d'utilisation des cookies</span>
                      
                      <input type="hidden" name="id" value="id" />
                      
                      
                      <p align="center">
                                  <input type="submit" name="submit" value="Confirmer mon inscription gratuite" style="cursor:pointer; background-color:#50ED03; width:250px; font-size:14px; font-style:normal; color:#FFFFFF"  />
                        
                      </p>              
                          </form>
                      
                      </div>
                      
                                
                      </body>
                      </html>   
                      



                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 novembre 2017 à 16:12:09

                        christouphe a écrit:

                        philodick a écrit:

                        Je traduis en clair tes lignes 19 à 22 :

                        Si la variable $m_a n'est pas vide on ne fait rien.

                        Si elle est vide, on ne fait rien non plus.

                        -
                        Edité par philodick il y a moins de 30s


                        ça c'est moi le WE ^^

                        ++

                        Ah quand l'algo se fait hédoniste ! :D

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 novembre 2017 à 16:18:38

                          :euh: j'ai dit que j'étais débutante

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 novembre 2017 à 16:22:38

                            VeGUE a écrit:

                            :euh: j'ai dit que j'étais débutante


                            Ok, mais alors essaye de tenir compte des remarques.  Je ne fais que pointer ce qui me paraît bancale dans ton code.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 novembre 2017 à 16:28:38

                              Oui Philodick j'en tiens compte et je comprends votre amusement, je suis tellement axée sur le fait de récupérer l'ID que je n'avais pas remarqué ce second problème. 

                              J'ai tout d'abord essayé de mettre une FK dans la table mais ça ne fonctionnait pas alors que je ne voyais pas d'erreur donc j'ai pensé que ce serait plus simple avec LastInsertId

                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 novembre 2017 à 16:37:50

                                Il faut juste comprendre ce que fait LastInsertId, c'était l'objet de la remarque de Christouphe : ce n'est ne rien une requête qui interroge pour savoir quel est le dernier id qui a été inséré, c'est en quelque sorte la mémoire de ce qui vient juste d'être insérer dans la table, au cours d'une requête qui vient d'avoir lieu, c'est à dire dans l'exécution de la même page PHP. C'est pourquoi, si tu veux l'utiliser, ça doit figurer après la requête concernée, et non pas avant.

                                Tu pourrais donc faire :

                                 
                                include('config.php');
                                 
                                    if(ISSET($_POST['m_a']))
                                {
                                 
                                $m_a = $_POST['m_a'];
                                 
                                $req = $conn->prepare('INSERT INTO male (m_a) VALUES (:m_a)');
                                 
                                $req->bindParam(':m_a' , $m_a);
                                 
                                $req->execute();
                                
                                $userID=$req->lastInsertId();



                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 novembre 2017 à 16:45:23

                                  Merci Philodick pour tes explications. Est-ce une méthode fiable pour récupérer le userId de table en table ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 novembre 2017 à 16:54:49

                                    C'est fiable pour récupérer l'id de la table en question, à un instant t. Tu peux difficilement t'y fier pour la suite, si la table est modifiée entre temps. Après j'ai du mal à voir pourquoi tu as deux tables différentes... Il faudrait qu'on sache plus précisément où se situe ton problème.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 novembre 2017 à 17:14:57

                                      Ph

                                      Philodick, la page ne fonctionne pas, faut il également insérer Inserid dans la première page du formulaire ? voici le code :

                                      <?php
                                      session_start();
                                      include('config.php');
                                        
                                          if(ISSET($_POST['m_a']))
                                      {
                                        
                                      $m_a = $_POST['m_a'];
                                        
                                      $req = $conn->prepare('INSERT INTO male (m_a) VALUES (:m_a)');
                                        
                                      $req->bindParam(':m_a' , $m_a);
                                        
                                      $req->execute();
                                       
                                      $userID=$req->lastInsertId();
                                      header('Location: male2.php');
                                      
                                      
                                      ?>
                                      
                                      J'ai défini des tables différentes car des images sont proposées en fonction du genre (homme ou femme), puis de nouvelles images sont proposées en fonction des premiers choix d'images effectués. Le but étant de définir les besoins et les associations
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        17 novembre 2017 à 17:29:39

                                        En l'état, $userID ne sera pas transmis à male2.php si c'est ce que tu veux. Après est-ce tout ton code ? Parce que si c'est le cas, il te manque une accolade et tu devrais avoir une erreur (les erreurs sont bien activées ?).

                                        Pour la structure de ta bdd, il me semblerait plus logique de n'avoir qu'une seule table avec une colonne "genre".

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 novembre 2017 à 17:46:54

                                          Philodick, en effet les erreurs n'étaient pas activées donc la page fonctionne en revanche l'ID n'est pas récupéré, un nouvel id est créé dans la table male. Même si j'effectue une seule colonne genre, les images sont différentes selon le genre et selon les 1er choix effectués, il me faudra donc une autre table pour gérer les images. Merci pour tes réponses
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            17 novembre 2017 à 18:44:15

                                            Tu peux très bien gérer les images en fonction du genre dans une seule table.

                                            J'avoue que je n'arrive pas à voir ce que tu veux faire avec cet id...

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 novembre 2017 à 9:38:57

                                              Merci Philodick, je vais tacher de refaire ma table, cela réglera le problème :)
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              pb avec LastInsertId

                                              × 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