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 :

Afficher une div en fonction d'une valeur booléenne


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Afficher une div en fonction d'une valeur booléenne
    Bonjour,

    je cherche depuis un bon moment !!!
    Dans mon exemple si le résultat indiqué est 5 j'affiche un message mais si le résultat est différent je veux que la div reste affichée.

    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
     
    <span style="cursor:pointer" onclick="javascript:montrer('madiv');"><b>Tester vos connaissances ?</b></span> <br />
     
    <?php
    $afficher = "";
    $total = isset($_POST['total']) ? $_POST['total'] : "";
     
    if (isset($_POST['valider1'])){
    	if ($total == 5){
    		$afficher = true;
    	}
    	else {
    		$afficher = false;
     
    	}
    }
     
    if ($afficher == false){
    	echo '<div id="madiv" >
    		<FORM NAME="log" ACTION="index.php?page=connexion" METHOD="POST">
    			indiquer le résultat de 2 + 3 <input type="text" name="total" value="" ><br />
    			<input type="submit" name="valider1" value="valider"/>
    		</FORM>
    	</div>';
    } 
    else {
    	echo "le résultat est correct";
    }
    ?>
    le fichier css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #madiv {display:none; }
    je ne mets pas fonction script car elle fonctionne

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    que vaut :
    ?

    N.B. C'est du "Débugage de base"...

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $_POST['total'];
    j'ai un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Notice: Undefined index: total in C:\Weblocal\Sites\Jumelage\fr\logging.php on line 207
    avec
    le résultat s'affiche mais pas la div lorsque le résultat est faux. !!!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bon.

    A priori, c'est juste de la LOGIQUE assez basique.

    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
     
    <?php
    $is_correct = false;
    $total = isset($_POST['total']) ? $_POST['total'] : "";
     
    if (isset($_POST['valider1'])){
    	$is_correct = ($total == 5); // true ou false
    }
     
    if ( $is_correct )
    {
    	echo "le résultat est correct";
    } 
    else {
    	echo '<div id="madiv" >
    		<FORM NAME="log" ACTION="index.php?page=connexion" METHOD="POST">
    			indiquer le résultat de 2 + 3 <input type="text" name="total" value="" ><br />
    			<input type="submit" name="valider1" value="valider"/>
    		</FORM>
    	</div>';
    }
    ?>

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Bonjour,

    Merci pour la réponse.
    Je viens de tester mais àa fonctionne toujours pas !! Que le résultat soit "true" ou "false" la div est cachée.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Vire le CSS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #madiv {display:none; }


    Sinon, autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    // ........
     
    if ( $is_correct )
    {
    	echo "le résultat est correct";
    } 
    ?>
    	<div id="madiv" style="display:<?php echo ( $is_correct )? 'none' : 'block'; ?>">
    		<FORM NAME="log" ACTION="index.php?page=connexion" METHOD="POST">
    			indiquer le résultat de 2 + 3 <input type="text" name="total" value="" ><br />
    			<input type="submit" name="valider1" value="valider"/>
    		</FORM>
    	</div>

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Ok c'est presque çà.
    si le résultat est "false", la div reste affichée.
    si le résultat est "true", la div disparaît

    au chargement de la page elle est affichée !!
    j'ai tenté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload = "javascript:cacher('madiv');">
    mais du coup elle est toujours cachée, que le résultat soit "false" ou "true". Donc j'ai supprimé !!

  8. #8
    Invité
    Invité(e)
    Par défaut
    La prochaine fois, tu indiqueras CLAIREMENT et DÈS TON 1er MESSAGE TOUS les tenants et aboutissants.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    // Traitement
    $is_correct = false;
    $total = isset($_POST['total']) ? $_POST['total'] : "";
     
    if (isset($_POST['valider1'])){
    	$is_correct = ($total == 5); // true ou false
    }
    ?>
    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
    <span style="cursor:pointer" onclick="montrer('madiv');"><b>Tester vos connaissances ?</b></span> <br />
    <?php
    // Affichage
    if ( $is_correct )
    {
    	echo $total." : le résultat est correct";
    } 
    ?>
    	<div id="madiv" style="display:<?php echo ( $is_correct || $total == '' )? 'none' : 'block'; ?>">
    		<form name="log" action="index.php?page=connexion" method="post">
    			indiquer le résultat de 2 + 3 <input type="text" name="total" value="" ><br />
    			<input type="submit" name="valider1" value="valider"/>
    		</form>
    	</div>
    <?php
    if( !$is_correct && $total != ''){
    	echo $total." : ce résultat faux...";
    }
    ?>
    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="javascript:montrer('madiv');"
    Il n'est plus utile de préciser "javascript" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="montrer('madiv');"

  9. #9
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci pour la réponse.
    Tout fonctionne comme je souhaite.
    Pardon de pas être clair dès le début

  10. #10
    Invité
    Invité(e)
    Par défaut
    Il existe une solution PLUS SIMPLE encore (et moins "prise de tête") :

    il suffit d'ajouter une <div>, pour "séparer" les actions :

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    #madiv {display:none; } /* on masque au départ */

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<div id="madiv">
    	<div style="display:<?php echo ( $is_correct )? 'none' : 'block'; ?>">
    		<form name="log" action="" method="post">
    			indiquer le résultat de 2 + 3 <input type="text" name="total" value="" ><br />
    			<input type="submit" name="valider1" value="valider"/>
    		</form>
    	</div>
    	</div>
    • "madiv" sera affichée au clic sur le bouton.
    • L'autre * dépend uniquement du résultat du formulaire.

    * (on pourrait utiliser une balise <fieldset>)

  11. #11
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Après avoir beaucoup galéré et avec beaucoup d'aide le problème est résolu.
    Ce code permet d'afficher un formulaire pour saisir une adresse mail. Si l'adresse est correcte on ferme la div sinon on écrit un message d'erreur et la div reste affichée.
    Pour ceux que cela intéresse :
    code de la page index.php
    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
     
    <?php
    include("fonctionsphp.php");
     
    // Traitement
    $is_correct = false;
     
    $saisi = isset($_POST['saisi']) ? $_POST['saisi'] : "";
    $mail = !empty($_POST['mail']) ? $_POST['mail'] : "";
     
    if ($mail){
      $adresse_mail = htmlentities($mail);
      $is_correct = !VerifierAdresseMail($adresse_mail) ? false : true;
      $saisi =  $is_correct == true ?  'ok' : '';
    }
     
    if (isset($_POST['valider2'])){
    	$is_correct = ($saisi == 'ok'); // true ou false
    }
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>toto</title>
        <link rel="stylesheet" type="text/css" href="style.css" />
        <script type="text/javascript" src="scripts/scripts.js"></script>
      </head>
      <body style="font-family:verdana">
        <span style="cursor:pointer" onclick="montrer('madiv');">
          <b>Mot de passe oublié ?</b>
        </span>
        <br />
        <?php
        // Affichage
        if ( $is_correct ) {
          echo $mail." : adresse correcte";
        } 
        ?>
          <div id="madiv" style="display:<?php echo ( $is_correct || $mail == '' )? 'none' : 'block'; ?>">
            <form name="log" action="" method="post">
              Saisissez votre adresse mail 
              <input type="text" name="mail" value="<?php echo $mail;?>" ><br />
              <input type="text" name="saisi" value="<?php echo $saisi; ?>"><br />
              <input type="submit" name="valider2" value="valider"/>
            </form>
          </div>
        <?php
        if( !$is_correct && $mail != ''){
          echo $mail." : adresse incorrecte!";
        }
        ?>
      </body>
    </html>
    le fichier script.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function montrer(id){
    	document.getElementById(id).style.display = "inline";
    }
    le fichier fonctionsphp.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //vérifie l'adresse mail
    function VerifierAdresseMail($adresse_mail){
       $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
       if(preg_match($Syntaxe,$adresse_mail))
          return true;
       else 
         return false;
    }
    le fichier style.css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #madiv { display :none; }
    Merci pour l'aide apportée

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/04/2016, 13h32
  2. [WD-2002] Afficher un champ en fonction de la valeur d'une liste déroulante
    Par babycoca dans le forum Word
    Réponses: 7
    Dernier message: 07/10/2009, 11h03
  3. [VxiR2] Comment afficher une valeur en fonction du max d'une autre valeur
    Par mp.giraud dans le forum Deski
    Réponses: 3
    Dernier message: 06/05/2009, 16h58
  4. [MySQL] Afficher une valeur en fonction de celle d'un champ set
    Par sophie_var_83 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/12/2008, 17h16
  5. Réponses: 5
    Dernier message: 09/12/2007, 18h17

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