Pourquoi ce code ne fonctionne pas

bonjour
j essaye ce morceau de code qui ne fonctionne pas
qui peux m expliquer pourquoi
merci de l aide

<?php
if($_POST['question1'] == "oui" && $_POST['question2'] == "oui")
{
    header('Location: http://forums.phpbb-fr.com/');
}
elseif($_POST['question1'] == "oui" && $_POST['question2'] == "non")
{
    header('Location: https://www.commentcamarche.net/
}
elseif($_POST['question1'] == "non" && $_POST['question2'] == "oui")
{
    header('Location: https://www.google.be/?hl=fr&gws_rd=ssl
}
elseif($_POST['question1'] == "non" && $_POST['question2'] == "non")
{
    header('Location: https://www.google.fr/?gws_rd=ssl
}
else
{
    header('Location: formulaire.php');
}
?>
<html>
<body>
<form action="questionnaire.php" method="post">
<p>Question n°1 : blablabla ?</p>
<p><input type="radio" name="question1" value="oui1" />&nbsp;Oui</p>
<p><input type="radio" name="question1" value="non1" />&nbsp;Non</p>
<p>Question n°2 : blablabla ?</p>
<p><input type="radio" name="question2" value="oui2" />&nbsp;Oui</p>
<p><input type="radio" name="question2" value="non2" />&nbsp;Non</p>
<p><input type="submit" value="VALIDER" /></p>
</form>
</body>
</html>

5 réponses

  1. Bonsoir,

    On peut remarquer qu'aucune des conditions sauf la dernière ne sera jamais remplie puisque vous avez indiqué en value "oui1" et non "oui" ainsi que "non1" alors que vous testez si il y a "non" indiqué etc...

    LA VALEUR QUE PRENDRA LA VARIABLE POST EST CELLE INDIQUE PAR L'ATTRIBUT VALUE ET NON LE TEXTE INDIQUE EN HTML; ne confondez pas affichage et valeur de variables.

    Votre structure conditionnelle en elseif pour finir sur else est assez moche: source d'erreurs et un casse tête à modifier, sans parler de la complexité de lecture/compréhension du code.

    Je vous conseille de tester vos valeurs POST et de vérifier si celle ci existe via isset(), il est aussi recommandé de ne pas utiliser ces variables directement par soucis de sécurité.

    Vous auriez fait un echo() de vos variables vous auriez constaté le problème, echo() est la fonction la plus utile en PHP.
    0
    1. Bonjour,

      Ici:

      <input type="radio" name="question1" value="oui1" /> Oui</p>

      si je sélectionne cette option, c'est oui1 qui est envoyé, or vous testez oui.

      Donc, ça ne peut pas marcher.

      Corrigé:

      <form action="questionnaire.php" method="post">
      <p>Question n°1 : blablabla ?</p>
      <p><input type="radio" name="question1" value="oui" />&nbsp;Oui</p>
      <p><input type="radio" name="question1" value="non" />&nbsp;Non</p>
      <p>Question n°2 : blablabla ?</p>
      <p><input type="radio" name="question2" value="oui" />&nbsp;Oui</p>
      <p><input type="radio" name="question2" value="non" />&nbsp;Non</p>
      <p><input type="submit" value="VALIDER" /></p>
      </form>

      0
      1. bonsoir a tous
        merci pour la reponse
        mais cela ne fonctionne pas

        j ai un peu modifie le code
        le voici
        <?php
        if($_POST['question1'] == "oui" )
        {
            header('Location: http://forums.phpbb-fr.com/');
        }
        elseif($_POST['question1'] == "non" )
        {
            header('Location: https://www.commentcamarche.net/
        }
        
        
        else
        {
            header('Location: formulaire.php');
        }
        ?>
        <html>
        <body>
        <form action="questionnaire.php" method="post">
        <p>Question n°1 : blablabla ?</p>
        <p><input type="radio" name="question1" value="oui" />&nbsp;Oui</p>
        <p><input type="radio" name="question1" value="non" />&nbsp;Non</p>
        <p><input type="submit" value="VALIDER" /></p>
        </form>
        </html>


        j ai une erreur a la ligne 7
        Notice: Undefined index: sex in /home/a3325630/public_html/les-perles/essai redirectio/formulaire.php on line 7
        0
        1. voila cela fonctionne avec cet exemple
          <?php
          if($_POST['question1'] == "oui" )
          {
              header('Location: http://forums.phpbb-fr.com/');
          }
          elseif($_POST['question1'] == "non" )
          {
              header('Location: https://www.commentcamarche.net/
          }
          
          ?>
          <html>
          <body>
          <form action="questionnaire.php" method="post">
          <p>Question n°1 : blablabla ?</p>
          <p><input type="radio" name="question1" value="oui" />&nbsp;Oui</p>
          <p><input type="radio" name="question1" value="non" />&nbsp;Non</p>
          <p><input type="submit" value="VALIDER" /></p>
          </form>
          </html>


          Mais a present comment faire pour ouvrir les liens dans un nouvel onglet dans un nouvel onglet
          0
          1. Bonsoir,

            Avec header() vous faites une redirection via le protocole http.

            Pour ouvrir sur un clic dans une autre fenêtre, il y a plus simple:1

            <a href="monsite.com" target="autre">mon texte</a>

            Mais vous ne pouvez pas ouvrir une autre fenêtre ou onglet avec header();

            A+
            0
        2. bonsoir
          merci pour la reponse
          mais j ai garder l exemple que j ai arrive a faire fonctionner
          0