IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème avec une boucle [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 30
    Points : 24
    Points
    24
    Par défaut Problème avec une boucle
    Bonjour,

    Voila mon souci :

    J'ai fait une page d'identification (user,password) gerer par un base de donnée.

    Jusque la tout va bien, le problème que j'ai c'est que si l'utilisateur se trompe dans le user ou le password le message d' erreur s'affiche autant de fois qu'il y a d'enregistrements dans ma base. (pb dans ma boucle).

    Mais je n'arrive pas a résoudre le problème.

    Voici le code de ma boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    while ($donnees = mysql_fetch_array($reponse))
               {
                  if (($donnees['nom'] == $_POST['user']) && ($donnees['password'] == $_POST['pass']))
                  {
                  renvoi("validation.php3");
                  }
                  else
                  {
                  echo "<table  align=\"center\"><tr><td>";
                  echo "<br><br><br><br><br><br><br><br><br>";
                  affichage_alerte ("5", "red", "Nom d&rsquo;utilisateur ou mot de passe incorrect");
                  echo "</td></tr></table>";
                  }
               }

    Si quelqu'un peut m'aider un peu.

    D'avance merci.

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je pense que le problème se situe en amont : il faut mettre une condition WHERE dans ta requête, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM user
    WHERE username = "$username"
       AND password = MD5("$password");
    Ainsi, il te suffit d'exécuter la requête et de voir si mysql_fetch_assoc() te retourne un tuple : si oui, c'est ok ; sinon, il y a eu une erreur.

    Le problème est que tu fais une boucle, ironiquement.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    $user = strip_tags(substr($_POST['user'],0,MAX_USER_TAILLE)); 
    $pass = strip_tags(substr($_POST['pass'],0,MAX_PASS_TAILLE)); 
    while ( $donnees = mysql_fetch_array($reponse) )
    {
    	if ($donnees['nom'] == $user) 
        { 
    		if($donnees['password'] == $pass)
    		{
    			renvoi("validation.php3"); 
    		}
    		else 
    		{ 
    			echo "<table  align=\"center\"><tr><td>"; 
    			echo "<br><br><br><br><br><br><br><br><br>"; 
    			affichage_alerte ("5", "red", "Nom d&rsquo;utilisateur ou mot de passe incorrect"); 
    			echo "</td></tr></table>"; 
    			break; //Arretez la boucle while
    		} 
    	}    
    }
    /me se remet au PHP ^^

    [EDIT après le message de Kirkis ]

    Ta méthode est meilleure, et je me suis cassé la tête pour rien en plus moi, mais je laisse quand même mon code modifié ^^

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 30
    Points : 24
    Points
    24
    Par défaut re : pb avec une boucle
    Merci pour ta reponse, mais je suis "newbie" en php donc effectivement c'est peut être un peu maladroit.

    Je ne comprend pas trop ta dernière phrase:

    Ainsi, il te suffit d'exécuter la requête et de voir si mysql_fetch_assoc() te retourne un tuple : si oui, c'est ok ; sinon, il y a eu une erreur.


    merci.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    @anfoni : Non ! Il n'y a pas besoin de faire une boucle ! MySQL peut ne retourner qu'une ligne correspondant aux infos, il faut l'utiliser sous peine de faire des tonnes de calculs inutiles !

    @yayacameleon : Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = '...'; // cf. ci-dessus
    $result = mysql_unbuffered_query($sql) or die(mysql_error());
    if(mysql_fetch_assoc($result)){
       // user logged in
    }
    else{
       // erreur de login ou mot de passe
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kirkis
    @anfoni : Non ! Il n'y a pas besoin de faire une boucle ! MySQL peut ne retourner qu'une ligne correspondant aux infos, il faut l'utiliser sous peine de faire des tonnes de calculs inutiles !
    Maisheu, j'ai dit que tu avais raison dans mon édition de message ! (ou alors tu as posté ce message alors que j'éditais le mien )

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par anfoni
    Maisheu, j'ai dit que tu avais raison dans mon édition de message ! (ou alors tu as posté ce message alors que j'éditais le mien )
    Arf, désolé :/

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 30
    Points : 24
    Points
    24
    Par défaut re : pb avec une boucle
    Ah je vois, je vais tenter de mettre ca en place.

    Un grand merci a tous pour votre aide !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec une boucle For
    Par mademoizel dans le forum ASP
    Réponses: 3
    Dernier message: 24/03/2007, 13h20
  2. Problème avec une boucle
    Par bf491499 dans le forum VB.NET
    Réponses: 1
    Dernier message: 16/03/2007, 07h35
  3. Problème avec une boucle
    Par sissi25 dans le forum Langage
    Réponses: 7
    Dernier message: 21/02/2007, 23h40
  4. problème avec une boucle
    Par mars315 dans le forum Langage
    Réponses: 14
    Dernier message: 25/11/2006, 08h39
  5. Problème avec une boucle for
    Par cisse18 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/03/2006, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo