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 :

pourquoi pas de transfert dans la bdd..? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 208
    Par défaut pourquoi pas de transfert dans la bdd..?
    Salut, je teste ce script et je n'arrive pas à comprendre pourquoi les champs ne veulent pas s'inscrire dans la bdd ...
    Si quelqu'un a une idée du bug, je le remercie ;-)

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    <?php
    $bdd = new PDO('mysql:host=creddre.mysql.db;dbname=treza', 'rezach', 'MDP');
     
    if(isset($_POST['forminscription'])) {
       $nom = htmlspecialchars($_POST['nom']);
       $mail = htmlspecialchars($_POST['mail']);
       $mail2 = htmlspecialchars($_POST['mail2']);
       $mdp = sha1($_POST['mdp']);
       $mdp2 = sha1($_POST['mdp2']);
       if(!empty($_POST['nom']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
          $pseudolength = strlen($nom);
          if($pseudolength <= 255) {
             if($mail == $mail2) {
                if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
                   $reqmail = $bdd->prepare("SELECT * FROM members WHERE mail = ?");
                   $reqmail->execute(array($mail));
                   $mailexist = $reqmail->rowCount();
                   if($mailexist == 0) {
                      if($mdp == $mdp2) {
                         $insertmbr = $bdd->prepare("INSERT INTO members(nom, email, password) VALUES($nom, $mail, $mdp)");
                         $insertmbr->execute(array($nom, $mail, $mdp));
                         $erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";
                      } else {
                         $erreur = "Vos mots de passes ne correspondent pas !";
                      }
                   } else {
                      $erreur = "Adresse mail déjà utilisée !";
                   }
                } else {
                   $erreur = "Votre adresse mail n'est pas valide !";
                }
             } else {
                $erreur = "Vos adresses mail ne correspondent pas !";
             }
          } else {
             $erreur = "Votre nom ne doit pas dépasser 255 caractères !";
          }
       } else {
          $erreur = "Tous les champs doivent être complétés !";
       }
    }
    ?>
    <html>
       <head>
          <title>TUTO PHP</title>
     
       </head>
       <body>
          <div align="center">
             <h2>Inscription</h2>
             <br /><br />
             <form method="POST" action="">
                <table>
                   <tr>
                      <td align="right">
                         <label for="nom">nom :</label>
                      </td>
                      <td>
                         <input type="text" placeholder="Votre nom" id="nom" name="nom" value="<?php if(isset($nom)) { echo $nom; } ?>" />
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="mail">Mail :</label>
                      </td>
                      <td>
                         <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" />
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="mail2">Confirmation du mail :</label>
                      </td>
                      <td>
                         <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" />
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="mdp">Mot de passe :</label>
                      </td>
                      <td>
                         <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="mdp2">Confirmation du mot de passe :</label>
                      </td>
                      <td>
                         <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
                      </td>
                   </tr>
                   <tr>
                      <td></td>
                      <td align="center">
                         <br />
                         <input type="submit" name="forminscription" value="Je m'inscris" />
                      </td>
                   </tr>
                </table>
             </form>
             <?php
             if(isset($erreur)) {
                echo '<font color="red">'.$erreur."</font>";
             }
             ?>
          </div>
       </body>
    </html>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 521
    Par défaut
    Bonjour,

    parce que la requête n'est pas correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $bdd->prepare("INSERT INTO members(nom, email, password) VALUES($nom, $mail, $mdp)");
    Il faut supprimer les variables dans VALUES et mettre soit des marqueurs nommés ou bien des ?
    La bonne requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $bdd->prepare("INSERT INTO members(nom, email, password) VALUES(?, ?, ?)");
    $insertmbr->execute(array($nom, $mail, $mdp));
    Ou bien en utilisant les marqueurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $bdd->prepare("INSERT INTO members(nom, email, password) VALUES(:nom, :mail, :mdp)");
    $insertmbr->execute(array(":nom"=>$nom, ":mail"=>$mail,":mdp"=>$mdp));

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 208
    Par défaut
    Merci Toufik83 !
    j'avais oublié de retirer ces valeurs et de les remplacer par ? ; ceci dit le script n'avait pas fonctionné malgré ces ? . Là il fonctionne, les champs sont insérés.

    Par contre, avec un test sur email identique, il n'est pas repéré comme tel sur le formulaire et insère une entrée supplémentaire avec le même email ...
    Une idée..?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 208
    Par défaut
    Autant pour moi ! le champ de verif n'était pas noté correctement et ne correspondait pas à ma base !

    Merci beaucoup de ton temps pour avoir apporter la réparation de mon code adapté ;-)
    Bonne soirée toufik83

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 521
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM members WHERE mail = ?
    INSERT INTO members(nom, email, password)...
    Le nom du champ correspondant à l'email de la table members n'est pas le même, parfois c'est email et parfois c'est mail ?!
    C'est bizarre que php ne te renvoi pas d'erreur!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire validé, mais pas d'insertion dans la BDD
    Par Jeanjan dans le forum Langage
    Réponses: 10
    Dernier message: 08/06/2014, 16h55
  2. Pourquoi pas de Java dans les JSP
    Par Kurogane dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 09/10/2013, 17h17
  3. Pourquoi pas de "cascading" dans cet exemple ?
    Par allweneed dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 10/04/2012, 14h04
  4. Réponses: 1
    Dernier message: 03/03/2010, 23h31
  5. [SERVER] Pourquoi pas de make dans mac os x server 10.4.9
    Par Khaled.Noordin dans le forum Développement OS X
    Réponses: 2
    Dernier message: 29/05/2007, 16h55

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