Check pseudo si existe

Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Pour compter un nombre ligne dans une table sql, il est recommandé d'utiliser une requête SELECT COUNT.
Je t'invite à reprendre l'exemple 2 de cette doc : https://www.php.net/manual/fr/pdostatement.rowcount.php#example-1034

Bonne journée
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
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;

}
?>
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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);
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
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;
}
?>
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
La méthode quote() ajoute déjà des guillemets (quote se traduit par guillemet en anglais ;) )
0