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

Langage PHP Discussion :

[Tabbleaux] Bug étrange entre un TRUE et un 1


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de ThitoO
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Par défaut [Tabbleaux] Bug étrange entre un TRUE et un 1
    Bonsoir à tous,
    j'ai commencé a faire un peu de PHP avant de commencer les cours (de php donc) histoire de m'avancer un peu et de pas trop etre a la ramasse pendant les cours. Et pendant mon apprentissage je suis tombé sur une colle .

    Voici mon probleme: j'ai une table dans ma base de donnée (MySQL), dans laquelle il ya 3 champs: un champs id (auto_increment), un champs pseudo et un champs pass. Et je veu vérifier que le pseudo entré par l'utilisateur existe et si il existe corresponde au mot de passe. Rien de bien compliquer donc normalement.
    Voici mon code:
    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
     
    connect();
    $sql = 'SELECT * FROM table_utilisateurs';
    $result = mysql_query($sql) or die (mysql_error());
     
    $pseudo = 'Nova';
    $pass = 'mot_de_passe';
    $OK = 0;
     
    while($donne = mysql_fetch_assoc($result))
    {
    	if($donne['pseudo'] == $pseudo)
    		if($donne['pass'] == $pass)
    			$OK = 1;
    }
    deconnect();
     
    if($OK == 1)
    	echo 'OK';
    Donc si le pseudo existe, on cherche le mot de passe, et si le mot de passe est le bon on donne 1 à $OK. Ensuite on affiche OK si $OK == 1 ...

    Ensuite j'ai voulu remplacer les 0 et 1 par des FALSE et TRUE, comme ca pour la forme, mais cela ne marche plus.
    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
     
    connect();
    $sql = 'SELECT * FROM table_utilisateurs';
    $result = mysql_query($sql) or die (mysql_error());
     
    $pseudo = 'Nova';
    $pass = 'mot_de_passe';
    $OK = FALSE;
     
    while($donne = mysql_fetch_assoc($result))
    {
    	if($donne['pseudo'] == $pseudo)
    		if($donne['pass'] == $pass)
    			$OK = TRUE;
    }
    deconnect();
     
    if($OK == TRUE)
    	echo 'OK';
    Je ne comprend pas pourquoi ca ne marche pas avec les TRUE/FALSE et pk ca marche avec les 0 et 1.

    Et meme en allant plus loin, à quoi sert les boolean ? Parce qu'ils peuvent tres bien etre remplacés par des 0 et 1 ...

    Merci d'avance
    ThitoO

    EDIT: Dans mes codes les fonctions connect() et deconnect(); sont des fonction de connexion et de deconnexion à la BDD, enregistré dans un fichier appars. Mais j'ai vérifié, ce n'est pas ca qui pose probleme (parce que de toutes facons ca marche avec les 0 et 1)

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    quand vous avez ce genre de "colle", réduisez au minimum la partie du code incriminée et vérifiez votre intuition.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
      $pseudo = 'Nova';
     
      $OK = FALSE;
     
      if ($pseudo == 'Nova') $OK = TRUE;
     
      if ($OK == TRUE) echo 'la variable $OK vaut TRUE';
      else echo 'la variable $OK vaut FALSE';
     
    ?>
    Ce code fonctionne parfaitement, conclusion?

    Cordialement,
    DaRiaN.

  3. #3
    Membre confirmé Avatar de ThitoO
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Par défaut
    Bon c'est bon ca marche

    Finalemement mon code marchait, c'est juste que le pseudo et le mot de passe ne correspondaient pas dans la table
    Donc le code marche aussi bien avec des 0 et 1, qu'avec des TRUE et FALSE

    M'enfin, je me pose toujours la question de l'utilité du TRUE/FALSE face à l'utilisation des 0 et 1 ...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    L'exemple d'une fonction sera toujours synonyme de compréhension :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
      $chaine = 'un petit test';
     
      var_dump(strpos($chaine, 'te')); // int(9)
      var_dump(strpos($chaine, 'un')); // int(0)
      var_dump(strpos($chaine, 'ph')); // bool(false)
     
    ?>
    En ce qui concerne la différence entre 0 et FALSE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
      $var = 0;
     
      if ($var == FALSE) echo 'La variable $var est égale à FALSE';
      if ($var === FALSE) echo 'La variable $var est strictement égale à FALSE';
     
      // ce script ne retournera que 'La variable $var est égale à FALSE'
     
    ?>

  5. #5
    Membre confirmé Avatar de ThitoO
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Par défaut
    Ahh d'accord, je ne saisissai pas une différence notable vu que je n'en avais pas l'utilité, je ne voyai pas la différence entre un 0 et un FALSE.

    Merci beaucoup

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

Discussions similaires

  1. c étrange entre les dialogs
    Par capello123 dans le forum Visual C++
    Réponses: 8
    Dernier message: 25/04/2007, 10h16
  2. Bug étrange sur du single
    Par rodymary dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 31/08/2006, 15h52
  3. Réponses: 4
    Dernier message: 12/06/2006, 15h43
  4. Bug étrange
    Par xavier faure dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2006, 13h54
  5. [VB6]Bug étrange lié à l'horloge...
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/02/2006, 15h19

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