Valeur retournée par une requete SELECT

[Résolu]
Signaler
Messages postés
5
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
24 août 2006
-
Messages postés
5
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
24 août 2006
-
Voilà je débute en php et j'étais en train de me faire une page de login/inscription.
L'inscription marche niquel mais j'ai une question à propos du login.

l'utilisateur entre donc son login et mot de passe  et je les récupère dans des variables (tout se fait sur la meme page là)

$pseudo= htmlentities($_POST['pseudo']);
$motdepasse= htmlentities($_POST['motdepasse']);

Ensuite je me connecte à ma bdd et je rentre la requete suivante qui doit normalement donc rechercher l'enregristrement avec dans le champ pseudo le pseudo entré par l'utilisateur

$reponse=mysql_query("SELECT pseudo,mot_de_passe FROM Membres WHERE pseudo='$pseudo'");

Voilà donc ma question: si le pseudo existe pas dans la bdd, qu'est-ce que MySql va me retourner comme valeur?

En effet ma boucle fonctionne mais pas dans tous les cas, la voici:

while($donnees = mysql_fetch_array($reponse))
{
   if($donnees['mot_de_passe'] != $motdepasse)
        {
            echo 'Login ou mot de passe incorrect.

';
         }
  } 

Si je rentre un login qui existe avec un mdp correct: rien ne s'affiche donc c'est bon
Si je rentre un login existant avec un mdp erroné, la phrase "Login ou mot de passe incorrect" s'affiche donc c'est bon.
Par contre si je rentre un pseudo inexistant là rien ne s'affiche pk?

J'ai rajouté un

elseif
{
   echo 'Login et mdp corrects

';
}

en dessous du if de la boucle il s'affiche si je rentre les bonnes données mais si je rentre un pseudo n'existant pas il ne s'affiche pas non plus.

Donc j'aurai voulu savoir pk rien ne s'affiche dans le cas d'un pseudo n'existant pas dans la base de donnée alors que tout le reste fonctionne.

Merci.

4 réponses

Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
salut

si tu rentres un pseudo qui n'existe pas, $donnees vaudra null (rien).
ce que tu dois faire est ceci (à la place de ton while):
if ($donnees=mysql_fetch_array($reponse, MYLSQ_ASSOC))
{
   if($donnees['mot_de_passe'] != $motdepasse)
   {
            echo 'Login ou mot de passe incorrect.

';
   }
}
else
{
    echo 'cet utilisateur n\'existe pas';
}  

personnellement je n'aime pas trop faire la différence entre un mouvais mot de passe et un mauvais login (car j'aime pas montrer qu'un login est bon), mais ce n'est qu'une question de point de vue ;)
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
essaie
if (!empty($pseudo))
à la place de ton isset ;)
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
Messages postés
5
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
24 août 2006

J'ai testé ta méthode, le script fonctionne très bien  mais il y a un autre problème que je comprend pas: la phrase cet utilisateur n'existe pass'affiche systématiquement au premier chargement de la page. Voilà donc tout le code php de la page:

 <?php
  
  $pseudo= htmlentities($_POST['pseudo']);
  $motdepasse= htmlentities($_POST['motdepasse']);
  
  if(isset($pseudo))
  {
   mysql_connect("bdd", "monlogin", "mon mdp"); // Connexion à la bdd du site.
   mysql_select_db("ma bdd");
   $reponse=mysql_query("SELECT pseudo,mot_de_passe FROM Membres WHERE pseudo='$pseudo'");
   if ($donnees=mysql_fetch_array($reponse, MYSQL_ASSOC))
   {
    if($donnees['mot_de_passe'] != $motdepasse)
    {
     echo 'Login ou mot de passe incorrect.

';
    }
   }
   else
   {
    echo 'Login ou mot de passe incorrect.

';
   }
        }
  ?>

Sur l'autre version avec la boucle le isset semblait fonctionner (aucun affichage au premier lance moment de la page) mais là plus
Messages postés
5
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
24 août 2006

En effet ça marche, merci beaucoup