Check pseudo si existe

Fermé
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 16 sept. 2015 à 17:40
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 17 sept. 2015 à 15:10
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

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 sept. 2015 à 11:41
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 mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
17 sept. 2015 à 12:19
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 sept. 2015 à 12:33
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 mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
17 sept. 2015 à 14:48
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 sept. 2015 à 15:10
La méthode quote() ajoute déjà des guillemets (quote se traduit par guillemet en anglais ;) )
0