Check pseudo si existe
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Pitet Messages postés 2845 Statut Membre -
Pitet Messages postés 2845 Statut Membre -
Bonjour à tous !
Voilà, ce bout de code me renvois toujours que le 'pseudo' existe...
Pouvez-vous m'aider à corriger le problème ?
index.php
check.php :
Merci d'avance
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
-
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 -
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; } ?>-
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);
-
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; } ?> -
-