Check pseudo si existe

Bonjour à tous !

Voilà, ce bout de code me renvois toujours que le 'pseudo' existe...
Pouvez-vous m'aider à corriger le problème ?

index.php
<input name="pseudo" type="text" id="pseudo" value="" maxlength="15" />
<span id="msgbox" style="display:none"></span>

<!-- AJAX CHECK -->
<script type="text/javascript">
$("#pseudo").blur(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Vérification en cours...').fadeIn("slow");
$.post("check.php" ,{pseudo:$(this).val()} ,function(data)
{
	
if(data=='no')
{
$("#msgbox").fadeTo(200,0.1,function(){$(this).html('Cette marque existe déjà.').addClass('Msg_Error').fadeTo(900,1);});
}
else
{
$("#msgbox").fadeTo(200,0.1,function(){$(this).html('Cette marque est disponible.').addClass('Msg_Valid').fadeTo(900,1);});
}
});

});
</script>


check.php :
<?php
require_once '../../../config.php';
global $connect_users;

$pseudo = $_POST['pseudo'];
if(strlen($pseudo) == 0)
{
echo ('empty');
}
else 
{
// On récupère la liste des membres et on check si le pseudo existe déjà
$req = $connect_users->query("SELECT pseudo FROM tb_user WHERE pseudo='$pseudo'");

// On déroule la liste
$chk_pseudo = $req->fetch(PDO::FETCH_ASSOC);

// Si le pseuo existe déjà on retourne non
if($chk_pseudo == '1'){echo ('yes');}
if($chk_pseudo <> '1'){echo ('no'); $ok = false;}

} 
?>


Merci d'avance

2 réponses

  1. Bonjour Pitet,

    En essayant de modifier le code, je reçois toujours "1" alors que c'est "0"...
    Je en sais pas si j'ai bugger à quelque part :s
    <?php
    require_once '../../../config.php';
    global $pdo;
    
    $Fr_Marque = $_POST['Fr_Marque'];
    if(strlen($Fr_Marque) == 0){echo '0';} else {
    
    $chk = "SELECT COUNT(*) FROM tb_marque WHERE WHERE Marque=".$Fr_Marque."";
    if ($res = $pdo->query($chk)) {
    
       /* Récupère le nombre de lignes qui correspond à la requête SELECT */
       if ($res->fetchColumn() > 0) {
    
          /* Effectue la vraie requête SELECT et travaille sur le résultat */
          $chk = "SELECT Marque FROM tb_marque WHERE Marque=".$Fr_Marque."";
          foreach ($pdo->query($chk) as $row) {
    
    	echo 1;
    	$ok = true;
    
          }
       }
       /* Aucune ligne ne correspond -- faire quelque chose d'autre */
       else {
          echo 0;
    	  $ok = false;
       }
    }
    
    $res = null;
    $conn = null;
    
    }
    ?>
    1. Tu as deux fois le mot clé WHERE dans ta première requête et la valeur $FR_Marque doit être entourée de guillemet si ce n'est pas un entier.

      Essaye de corriger ta requête comme ceci :
      $chk = "SELECT COUNT(*) FROM tb_marque WHERE Marque = " . $pdo->quote($Fr_Marque);
      


      Idem pour la 2ème requête :
       $chk = "SELECT Marque FROM tb_marque WHERE Marque = " . $pdo->quote($Fr_Marque);
      
    2. J'ai essayé avec
      ".$pdo->quote("'".$Fr_Marque."'");
      et sans
      ".$pdo->quote($Fr_Marque);
      mais toujours pareil résultat malgré les corrections...
      <?php
      require_once '../../../config.php';
      global $pdo;
      
      $Fr_Marque = $_POST['Fr_Marque'];
      if(strlen($Fr_Marque) == 0){echo '0';} else {
      
      $chk = "SELECT COUNT(*) FROM tb_marque WHERE Marque = ".$pdo->quote("'".$Fr_Marque."'");
      if ($res = $pdo->query($chk)) {
      
      
      if ($res->fetchColumn() > 0) {
      $chk = "SELECT Marque FROM tb_marque WHERE Marque = ".$pdo->quote("'".$Fr_Marque."'");
      foreach ($pdo->query($chk) as $row) {echo 1; $ok = true;}
      }
      
      else {echo 0; $ok = false;}
      }
      
      $res = null;
      $conn = null;
      }
      ?>
    3. La méthode quote() ajoute déjà des guillemets (quote se traduit par guillemet en anglais ;) )