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 :

Condition toujours fausse [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut Condition toujours fausse
    Bonjour, je suis débutant en php et recherche un peu d'aide sur une comparaison de deux variables dans une condition.
    Dans le script ci dessous j'ai une requête à une base qui génére une question aléatoire sur le nom du code postal d'un état. Celui est récupéré dans la variable $tab_result[0]"; La réponse du lecteur est récupéré au moyen d'un formulaire et de la variable $_GET[STATEPOSTAL]; Afin d'établir une comparaison je définis $STP=$_GET[STATEPOSTAL] et je compare $tab_result[0] == "$STP" dans le if.

    Le problème que je rencontre est que cette condition n'est jamais vérifiée et je ne sais pas pourquoi, alors que je peux afficher le contenu de mes variables.Merci si vous pouvez m'aider sur cette question.


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    $query = "SELECT postal,name FROM states ORDER BY postal";
    $info = mysql_query($query);
    mysql_data_seek($info,rand(0,mysql_num_rows($info)-1));
    $tab_result=mysql_fetch_row($info);
     
    echo "<table>"; 
     
     
    //1ère ligne 
    // affichage de la question : quel est le code postal de l'état suivant
    echo "<tr>";
    echo "<div style= 'font-family: Verdana; font-size: 14 px; color: #0000FF; font-style : italic; font-weight: normal'>";
    echo "<td width=\"75%\">";
    echo "Quel est le code postal de l'état suivant :";
    echo $tab_result[1];
    echo "?";
    echo "</td>";
    echo "</div>"; 
     
    echo "</tr>";
     
    echo "<br>";
     
    //2ème ligne : entrer une réponse
    echo "<tr>";
    echo "<td>";
    echo "<FORM ACTION='questionessai6.php' METHOD='GET'>";
    echo "Entrez Une réponse : ";
    echo "<INPUT TYPE='text' NAME='STATEPOSTAL' MAXLENGTH='2' SIZE='2'>";
     
     
    echo "</FORM>";
    echo "</td>";
    echo "</tr>"; 
    echo "</table>";
    echo "<br>";
     
     
     
     
     
    $STP=$_GET[STATEPOSTAL]; 
     
     
    echo "<br>";
    echo "<br>";
     
    echo "<br>"; 
    if ( $tab_result[0] == $STP ) {
    echo "<H2>Bravo !</H2>";
    echo "<H2>Le code postal de l'Etat de .$tab_result[1] est effectivement $tab_result[0].</H2>";
    echo "<H2> Vous avez une bonne réponse</H2>";
     
    }
     
    else 
     
    {
    echo "<br>";
    echo "Votre réponse est fausse. La bonne réponse est $tab_result[0]";
    }
     
    ?>

  2. #2
    jnore
    Invité(e)
    Par défaut
    Attention à l'écriture de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $STP=$_GET[STATEPOSTAL];
    qui s'écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $STP=$_GET['STATEPOSTAL'];

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut
    Tout d'abord merci de ton aide. J'ai modifié pour la récupération de la variable. J'ai toujours le même résultat, c.a.d ma condition est toujours fausse et je ne comprends pas pourquoi quand $tab_result[0] == $STP
    je n'ai pas l'execution du premier branchement :

    Code php : 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
    echo "<H2>Bravo !</H2>";
    echo "<H2>Le code postal de l'Etat de .$tab_result[1] est effectivement $tab_result[0].</H2>";
    echo "<H2> Vous avez une bonne réponse</H2>";
     
    ________________________________________________________
     $STP=$_GET['STATEPOSTAL'];	
     
     
    if ( $tab_result[0] == $STP ) {
    echo "<H2>Bravo !</H2>";
    echo "<H2>Le code postal de l'Etat de .$tab_result[1] est effectivement $tab_result[0].</H2>";
    echo "<H2> Vous avez une bonne réponse</H2>";
     
           }
     
    	   else 
     
    	   {
    	   echo "<br>";
           echo "Votre réponse est fausse. La bonne réponse est $tab_result[0]";
    	   }

  4. #4
    Membre chevronné Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Par défaut
    Fais un echo de tes deux variables. Dans le formulaire de ta page précédente tu as mit quoi comme valeur pour l'attribut method ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut
    Merci de tes suggestions.

    J'ai rajouté après la condition les 3 variables et elles affichent bien les résultats :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "<br>";
    echo $tab_result[0];
    echo "<br>";
    echo $STP;
    echo "<br>";
    echo $_GET['STATEPOSTAL'];

    quant à la deuxième question, le formulaire est dans la même page qui récupére la valeur entrée par $_GET['STATEPOSTAL'];

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "<FORM ACTION='questionessai3.php' METHOD='GET'>";
    echo "Entrez Une réponse : ";
    echo "<INPUT TYPE='text' NAME='STATEPOSTAL' MAXLENGTH='2' SIZE='2'>";
    echo "</FORM>";

    seule la condition if ( $tab_result[0] == $STP )est toujours fausse.

  6. #6
    Membre chevronné Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par défaut
    C'est le code complet là ?

    Le fonctionnement d'un formulaire nécessite 2 pages, celle de départ et celle de destination du formulaire. Les deux peuvent être codées par le même script mais à ce moment là il faut faire un test pour vérifier qu'on doit afficher le formulaire ou traiter les données qu'il retourne. Je ne vois rien de tel ici.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut Problème résolu
    Bonjour
    J'ai résolu le problème. Voici le script et cela marche sur une page si la table MYSQL existe bien entendu:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?php
    // PAGE QUESTION quel est le code postal de l'état suivant ?
     
    require ("../zconnection.php");
     
    //connexion au serveur de bases de données 
     
    $serveur=mysql_connect (SERVEUR,NOM,PASSE)
    or
    die("L'accès au serveur de base de données n'est pas possible actuellement.Merci de réessayer ultérieurement");
    //connexion à la base de données 
    mysql_select_db(BASE,$serveur) or die ("Accés à la base logiciel impossible actuellement. Merci d'essayer ultérieurement");
     
     
    $query = "SELECT postal,name FROM states ORDER BY postal";
    $info = mysql_query($query);
    mysql_data_seek($info,rand(0,mysql_num_rows($info)-1));
    $tab_result=mysql_fetch_row($info);
     
           echo "<table>";     
     
     
    		//1ère ligne     
           // affichage de la question : quel est le code postal de l'état suivant ?
           echo "<tr>";
           echo "<div style= 'font-family: Verdana; font-size: 14 px; color: #0000FF; font-style : italic; font-weight: normal'>";
    	   echo "<td width=\"75%\">";
    	   echo "Quel est le code postal de l'état suivant : ".$tab_result[1]."?";
     
    	   echo "</td>";
           echo "</div>"; 
     
           echo "</tr>";
     
    	   echo "<br>";
     
    	   //2ème ligne : Entrez une réponse.
    	   echo "<tr>";
    	   echo "<td>";
    	   echo "<FORM ACTION='question.php' METHOD='GET'>";
           echo "Entrez Une réponse : ";
           echo "(En lettres Majuscules) ";  
           echo "<INPUT TYPE='text' NAME='STATECODE' MAXLENGTH='2' SIZE='2'>";
    	   echo "<INPUT TYPE='hidden' NAME='REPSTATECODE' VALUE=$tab_result[0] MAXLENGTH='2' SIZE='2'>";
    	   echo "<INPUT TYPE='hidden' NAME='NAMESTATE' VALUE=$tab_result[1] MAXLENGTH='2' SIZE='2'>";
           echo "</FORM>";
           echo "</td>";
    	   echo "</tr>";    
           echo "</table>";
     
     
    	   $NAMESTP=$_GET['NAMESTATE'];
    	   $STP=$_GET['STATECODE'];	
    	   $REPSTP=$_GET['REPSTATECODE'];
     
     
     
     
     
     
    	   echo "<HR>";
     
    	    echo "<br>";  
     
    		if(isset($_GET['STATECODE']))
     
    		 { if (  $REPSTP == $STP ) 
     
    		     {
           echo "<H3>Bravo !</H3>";
    	   echo "<H3>Le code postal de l'Etat de $NAMESTP est effectivement $REPSTP.</H3>";
    	   echo "<H3> La réponse est bonne !!!</H3>";
     
     
                  }
     
    	   else 
     
    	   {
     
           echo "<br>";
           echo "<H3>Votre réponse est fausse. La bonne réponse est  $REPSTP</H3>";
     
     
    	   }
     
                   }
     
     
     
    //fermeture base
    mysql_close($serveur);
     
    ?>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/09/2010, 16h43
  2. [Toutes versions] afficher des messages d'erreurs si conditions sont fausses
    Par guigui71 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/05/2010, 16h03
  3. Réponses: 6
    Dernier message: 07/05/2009, 14h55
  4. Instruction toujour fausse
    Par khafor dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/10/2007, 12h47
  5. Garder le focus si condition fausse
    Par Alexandre Sahli dans le forum IHM
    Réponses: 12
    Dernier message: 07/12/2005, 15h53

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