par
Ryle » 08 nov. 2009, 12:07
Tu fais appel successivement à mysql_fetch_array et mysql_fetch_assoc alors que ces deux fonctions ont la même utilité et c'est ce double appel qui t'empêche de faire ton test correctement... De plus, tu as une erreur dans ta requête SQL. Si tu ne sors pas ta variable de la chaine, il ne faut pas mettre de "." pour la concaténation, sans quoi ton script cherchera un pseudo commençant et terminant par un point
A noter par ailleurs qu'il n'est pas utile d'ouvrir/fermer les balises php si tu ne mets pas de code html entre les deux, ni de définir un else si tu n'as pas besoin de gérer cette condition. Il n'est pas utile non plus de mettre un while si ta requête ne retourne au maximum qu'un seul enregistrement. (par contre faudra peut être un test si le pseudo n'est pas trouvé)
Enfin, plutôt qu'une redirection en javascript, je te recommande de la faire en php avec un header
<?php
$sql = "SELECT rang, pseudo FROM membres WHERE pseudo = '".$pseudo."'";
$reponses = mysql_query($sql);
if ($donnees = mysql_fetch_assoc($reponses)) {
$rang = $donnees['rang'];
if ($rang == 2) {
header('Location:../interdit.php');
exit;
}
}
else { // pseudo non trouvé
header('Location:../interdit.php');
exit;
}
// si l'on arrive ici, c'est que le pseudo existe et le rang différent de 2
....
?>
Tu fais appel successivement à mysql_fetch_array et mysql_fetch_assoc alors que ces deux fonctions ont la même utilité et c'est ce double appel qui t'empêche de faire ton test correctement... De plus, tu as une erreur dans ta requête SQL. Si tu ne sors pas ta variable de la chaine, il ne faut pas mettre de "." pour la concaténation, sans quoi ton script cherchera un pseudo commençant et terminant par un point ;)
A noter par ailleurs qu'il n'est pas utile d'ouvrir/fermer les balises php si tu ne mets pas de code html entre les deux, ni de définir un else si tu n'as pas besoin de gérer cette condition. Il n'est pas utile non plus de mettre un while si ta requête ne retourne au maximum qu'un seul enregistrement. (par contre faudra peut être un test si le pseudo n'est pas trouvé)
Enfin, plutôt qu'une redirection en javascript, je te recommande de la faire en php avec un header :)
[php]<?php
$sql = "SELECT rang, pseudo FROM membres WHERE pseudo = '".$pseudo."'";
$reponses = mysql_query($sql);
if ($donnees = mysql_fetch_assoc($reponses)) {
$rang = $donnees['rang'];
if ($rang == 2) {
header('Location:../interdit.php');
exit;
}
}
else { // pseudo non trouvé
header('Location:../interdit.php');
exit;
}
// si l'on arrive ici, c'est que le pseudo existe et le rang différent de 2
....
?>[/php]