Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bloquer formulaire si condition remplie

    25 juillet 2017 à 18:00:44

    Bonjour, je voudrais bloquer mon questionnaire, si l'utilisateur répond correctement ou si il dépasse 3 essais, ces colonnes existent dans ma table membres et fonctionnent; 2 conditions : 1.  Si colonne essais = 3 Alors bloquer le formulaire

    2. Si colonne points = 1 Alors bloquer le formulaire

    Comment je peux écrire cela en PHP ? Merci beaucoup d'avance.


    if(isset($_POST['validate'])) {
        $id = $_SESSION['id'];
        $insertessais = $bdd->exec("UPDATE membres SET essais = essais+1 WHERE id='$id'");
        $answer = htmlspecialchars($_POST['answer']);
        if(!empty($_POST['answer'])){
            $answerlength = strlen($answer);
          if($answerlength <= 255) {
              if($answer == 3) {
              $erreur = "Right answer";
              $insertpoints = $bdd->exec("UPDATE membres SET points = points+1 WHERE id='$id'");
              }
              else {
                 $erreur = "Wrong answer" ;
              }
             } else {
                 $erreur = "Your answer must not exceed 255 print";
             }
        } else {
            $erreur = "Your answer is empty";
     }
    }

    -
    Edité par NicoPro2000 25 juillet 2017 à 18:01:30

    • Partager sur Facebook
    • Partager sur Twitter
      26 juillet 2017 à 12:33:19

      Je ne suis pas sûr d'avoir bien compris ce que tu voulais faire, mais tu peux peut-être utiliser l'attribut disabled sur les différents input de ton formulaire ?

      Par exemple

      <input type="text" id="champ1" name="champ1" <?php if($answer==3){echo "disabled";} ?> >



      • Partager sur Facebook
      • Partager sur Twitter
        26 juillet 2017 à 13:04:49

        <input type="text" placeholder="Your answer" id="answer" name="answer" value="<?php if (!empty($answer)) { echo $answer; }; if($answer==3){echo "disabled";}  ?>" />

        Bonjour et merci. Quand je tape cela, le formulaire ne marche pas. Je voudrais que si l'utilisateur rentre une bonne réponse ou essaye plus de 3 fois alors le formulaire se bloque. Je ne sais pas comment le bloquer, peut être qu'il faut afficher un message au lieu du formulaire si la condition est remplie?

        Merci d'avance.

        J'ai une idée! Peut être que si l'utilisateur a rempli les conditions, alors il faut le rediriger vers une nouvelle page du site (dans le même onglet) où le formulaire est remplacé par un message (formulaire indisponible). Qu'en pensez vous ?

        -
        Edité par NicoPro2000 26 juillet 2017 à 13:17:50

        • Partager sur Facebook
        • Partager sur Twitter
          26 juillet 2017 à 14:07:08

          Si c'est ce que tu entends par "bloquer le formulaire" alors oui ! J'aurais plus appelé cela "le rendre inaccessible".

          Soit tu mets en place une redirection vers une nouvelle page, soit tu fais simplement ceci :

          <?php
          if ( $answer < 3 ) {
          /* affichage du formulaire */
          } else {
          /* affichage du message d'erreur */
          }
          ?>

          Ce qui te permet de ne pas multiplier le nombre de pages et donc de fichiers.

          Si je peux me permettre, je crois qu'il y a une erreur dans le code que tu as mis :

          <input type="text" placeholder="Your answer" id="answer" name="answer" value="<?php if (!empty($answer)) { echo $answer; }?>" <?php if($answer==3){echo "disabled";}  ?> />
          

          Tu n'avais pas fermé les " de l'attribut value.

          • Partager sur Facebook
          • Partager sur Twitter
            26 juillet 2017 à 18:33:22

            Bonjour et merci beacoup! J'ai modifié mon code, mais c'est bizarre car dans le champ du formulaire, est automatiquement écrit (on peut l'effacer) : <?php if (!empty($answer)) { echo $answer; }?>

            <?php
            				 $id = $_SESSION['id'];
            				 $reponse = $bdd->query("SELECT points FROM membres WHERE id = '$id'");
            				 $essai = $bdd->query("SELECT essais FROM membres WHERE id = '$id'");
                             $donnees = $reponse->fetch();
                             $donnees2 = $essai->fetch();
                             if ($donnees['points'] >= 1 OR $donnees2['essais'] >= 3) {
                              echo "Formulaire indisponible";
                                }
            					else{
            						echo '<label for="answer">Your solution :</label>               
                                 <input type="text" placeholder="Your answer" id="answer" name="answer" value="<?php if (!empty($answer)) { echo $answer; } ?>"  />
                                 <br />
                                 <input type="submit" name="validate" value="Validate my answer" />';
            					 }
                                   ?>



            • Partager sur Facebook
            • Partager sur Twitter
              26 juillet 2017 à 21:15:05

              bonsoir, tu fais un echo tout ce qui est entre ' ' vas s'afficher, si tu écris du texte dans cette délimitation celui-ci s'affiche.

              Je fermerais la balise php après l’accolade ouvrante du else pour afficher le HTML normalement (sans le echo) et ouvrirais les balise php comme tu le fais à l'intérieur de l'input. Je terminerais par placer l'accolade fermante dans les balises php.

              Partie du cours à revoir... 

              • Partager sur Facebook
              • Partager sur Twitter

              Bloquer formulaire si condition remplie

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown