Verification si le pseudo existe

Chooper01

Chooper01 Le 26 août 2016 à 23:07 (Édité le 25 janvier 2019 à 17:52)

Bonsoir, ( C'est le 3 ieme post que je fais il y a eu un bug. )

J'ai une page profil.php mais lorsque l'utilisateur souhait modifié son pseudo je veux vérifie si il existe déjà mais sa veut pas alors que pour email sa fonctionne nickel alors que c'est les même lignes de code ...

Php :
if (isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']) 
      {
          $newpseudo = htmlspecialchars($_POST['newpseudo']) ;
          $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
          $reqpseudo->execute(array($newepseudo));
          $pseudoexist = $reqpseudo->rowcount();
          
          if ($pseudoexist == 0) 
          {
            $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ? ") ;
            $insertpseudo->execute(array($newpseudo, $_SESSION['id'])) ;
            header('Location: profil.php?id=' . $_SESSION['id']) ;
            
          }
          else 
          {
            $erreur = "Pseudo déja utilisé !";
          }
      }
Les inputs ;
<fieldset>
          <legend> Profil de <?php echo $user['pseudo'] ; ?> </legend>
          <form id="bouton" method="POST" action="">
            <label>Nouveau Pseudo :</label>
            <input type="text" name="newpseudo" placeholder="Nouveau Pseudo" size="25" value="<?php echo $user['pseudo'] ; ?>" /> <br>
            <label>Nouveau Mots de Passe :</label>
            <input type="password" name="newmdp1" placeholder="Nouveau Mots de Passe" size="25"/> <br>
            <label>Confirmer le nouveau Mots de Passe :</label>
            <input type="password" name='newmdp2' placeholder="Confirmer Mots de Passe" size="25"/> <br>
            <label>Nouveau E-mail :</label>
            <input type="email" name="newemail" placeholder=" Nouveau E-mail" size="25" value="<?php echo $user['email'] ; ?>"/> <br />
            <input type="submit" name="valider" value="Envoyer !" /> <br />
          
          </form>
          <?php if(isset($msg)) {echo $msg ;} ?> 
          <?php if(isset($erreur)) {echo $erreur;} ?> 
    
        </fieldset>
Merci !
TheOldNoob

TheOldNoob Le 26 août 2016 à 23:38

Salut Chooper1,

Pour simplifier, tu peu faire la même requete, que se soit pour la création ou l'update, ainsi pas de problème.

Et du coup, tu peu faire une seule et même requête pour vérifié et l'email et le pseudo, parce que, que se soit lors de la création ou lors de l'édition, il faut vérifié autant les pseudo que les emails.

Du coup, tu fait :
$newpseudo = htmlspecialchars($_POST['pseudo'];
$newmail = htmlspecialchars($_POST['email'];
$req = $bdd->prepare('SELECT email, pseudo WHERE email = ? OR pseudo = ?');
$req->bindValue(1, $newmail);
$req->bindValue(2, $newpseudo);
$req->execut();

if($req->rowCount() != 0){ // Si l'email ou le pseu n'est pas dans la bdd alors, on peu crée l'utilisateur
             $errors[] = 'L\'email existe déjà !';
        }
Chooper01

Chooper01 Le 26 août 2016 à 23:44

Salut déjà merci j'aurai 2 questions 1er "bindvalue" sa veut dire quoi et sert a quoi ? et ou je dois insérer ceci dans monde ? 
TheOldNoob

TheOldNoob Le 26 août 2016 à 23:49

:)

Je t'envoie vers la doc 😉

http://php.net/manual/fr/pdostatement.bindvalue.php

Tu le met a la place de ton code déjà existant....

$newpseudo = htmlspecialchars($_POST['newpseudo']) ;
$reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
$reqpseudo->execute(array($newepseudo));
$pseudoexist = $reqpseudo->rowcount();
Mais bon, après je code pas du tout comme ça 😀
Chooper01

Chooper01 Le 27 août 2016 à 00:01 (Édité le 27 août 2016 à 00:05)

Niquel un grand merci sa fonctionne parfaitement !
Il y a juste un soucis avec l'erreur sa ne l'affiche pas ^^
TheOldNoob

TheOldNoob Le 27 août 2016 à 00:10

essais de mettre ça avant ton premier if

$errors = array(); // contiendra nos éventuelles erreurs
Chooper01

Chooper01 Le 27 août 2016 à 00:14

Voila ce que sa me fait , ) "Notice: Array to string conversion in C:\wamp64\www\cuisine\profil.php on line 116"

mon code :
$erreur = array();
if (isset($_SESSION['id'])) 
{     
      $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ? ");
      $requser->execute(array($_SESSION['id'])) ;
      $user = $requser->fetch() ;
      if (isset($_POST['newpseudo']) AND isset($_POST['newemail']) AND !empty($_POST['newpseudo']) AND !empty($_POST['newemail']) AND $_POST['newpseudo'] != $user['pseudo'] AND $_POST['newemail'] != $user['email']) 
      {
          $newpseudo = htmlspecialchars($_POST['newpseudo']) ;
          $newemail = htmlspecialchars($_POST['newemail']) ;
          $req = $bdd->prepare("SELECT email, pseudo FROM membres WHERE pseudo = ? OR email = ? ");
          $req -> bindvalue(1, $newemail) ;
          $req -> bindvalue(1, $newpseudo) ;
          $req -> execute() ;
          if($req->rowCount() != 0)
          { 
             $erreur[]= "Email ou Pseudo déja utilisé ! " ;
          }

          <?php if(isset($msg)) {echo $msg ;} ?> 
          <?php if(isset($erreur)) {echo $erreur;} ?> 
    
TheOldNoob

TheOldNoob Le 27 août 2016 à 00:20

ligne 116 c'est laquel?
Chooper01

Chooper01 Le 27 août 2016 à 00:23

la 2ieme ligne de code  
<?php if(isset($erreur)) {echo $erreur;} ?> 
TheOldNoob

TheOldNoob Le 27 août 2016 à 00:49

Essaie :

<?php if(isset($erreur)) {echo implode('<br>', $erreur);} ?> 
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte