[php]Problème avec un valeur par defaut

Bonjour,

j'ai créer un script qui me permet de changer la couleur de mon arrière plan en php et y ait ajouter une couleur par défaut avec "selected" mais à chaque fois je n'arrive pas sur la couleur par defaut défini.

Voyez vous ou ca cloche ?
<html>
<?php
$a=array("<body bgcolor=\"#FFCCFF\">","<body bgcolor=\"#CCFFFF\">","<body bgcolor=\"#99FF99\">","<body bgcolor=\"#E8E8E8\">");
?>
<form method="post">
<select name="couleur">
<option value="red">Couleur rose</option><br/>
<option value="blue">Couleur bleue</option><br/>
<option value="vert">Couleur verte</option><br/>
<option value="brun" 
selected="true">Couleur par defaut</option><br/>
</select>
<input type="submit" />
</form>
<?php
if ($_POST['couleur']=="red")
        {
	print ($a[0]);
	}
elseif ($_POST['couleur']=="vert")
	{
	print ($a[2]);
	}
elseif ($_POST['couleur']=="brun")
	{
	print ($a[3]);
	}
else
	{
	print ($a[1]);
	}
?>
</body>
</html>


Amicalement
Steph70
Configuration: Linux Debian
Mozilla 1.8.1.14

10 réponses

  1. Je confirme.

    La couleur utilisée dans le "else" est celle qui s'affiche par defaut à l'ouverture de la page.

    Et en fait c'est normal

    Merci a tous pour votre aide précieuse

    Problème résolu

    Amicalement
    Steph70
    0
    1. Ah ah !!!

      J'ai peut être la solution. A priori la valeur par defaut est la dernière du tableau.

      J'essais de modifier celle ci et vous tiens au courant

      Amicalement
      Stéph70
      0
      1. Re hello,

        J'ai donc bien suivi tes conseils.

        Résultat :

        Lors de l'ouverture, il me met en couleur "bleu" sans afficher quoi que ce soit (je ne suis pas rentré dans le if )

        Après il me donne bien les couleurs et les print qui vont avec sans difficulté.

        Mais je n'arrive pas a fixer une couleur par défaut à l'ouverture

        Amicalement
        Steph70
        0
        1. Essaye de mettre des "echo" dans tes if pour voir dans lequel il rentre. Merci de nous dire quoi.

          Exemple :
          if ($_POST['couleur']=="red")
          {
          echo "couleur : red car ".$_POST['couleur']." choisi.";
          print ($a[0]);
          }
          elseif ($_POST['couleur']=="vert")
          {
          echo "couleur : vert car ".$_POST['couleur']." choisi.";
          print ($a[2]);
          }
          ... à compléter.
          0
          1. Je me demande si je me suis bien expliqué.

            Lorsque j'arrive sur ma page, j'ai bien la liste déroulante postionnée sur la "valeur par defaut" mais mon arrière plan à pris une des autres couleurs.

            Je dis car quand je suis revenu devant mon ordi ma question ne m'a pas semblé aussi net que je l'avais pensé au départ

            Amicalement
            Steph70
            0
            1. Alors Essaye de mettre des "echo" dans tes if pour voir dans lequel il rentre. Merci de nous dire quoi.

              Exemple :
              if ($_POST['couleur']=="red")
              {
              echo "couleur : red car ".$_POST['couleur']." choisi.";
              print ($a[0]);
              }
              elseif ($_POST['couleur']=="vert")
              {
              echo "couleur : vert car ".$_POST['couleur']." choisi.";
              print ($a[2]);
              }
              ... à compléter.
              0
          2. Re et merci encore pour votre aide.

            CIAnure à raison, il y a bien 4 valeurs dans mon tableau. La dernière est donc bien le 3.

            De plus, si cela n'etait pas, ca ne fonctionnerait pas lorsque je clique sur "valeur par defaut" et ce n'est pas le cas

            CIAnure voici le resultat de la commande demandée :

            array(1) {
              ["couleur"]=>
              string(4) "brun"
            }


            Amicalement
            Steph70
            0
            1. Mettre ceci juste devant le if :


              echo '<pre>';
              var_dump($_POST);
              echo '</pre>';


              Et après tu reteste ta page, tu valide le formulaire avec la couleur par défaut, nous indiqué le résultat du var_dump.
              Merci, CIAnure.
              0
              1. c'est pas ça, il essaie d'afficher quelque chose à la position 3 alors qu'il y a pas de position 3. Il vient de là le problème. O_O
                0
              2. @X-FanSoit c'est moi, soit c'est vous. Mais moi je vois 4 valeurs dans son tableau $a, donc l'indice maximun est bien le 3.
                Pourquoi vous dites cela?
                0
              3. @CIAnureNIARK, mon firefox bug depuis ce matin. Laisse faire :P
                Je vais relire et je redonne une réponse dans 2 minutes.
                0
            2. Ah ouai mais si ta default value c'est brun alors c'est:

              if ($_POST['couleur']=="red")
              {
              print ($a[0]);
              }
              elseif ($_POST['couleur']=="vert")
              {
              print ($a[2]);
              }
              elseif ($_POST['couleur']=="blue")
              {
              print ($a[3]);
              }
              else
              {
              print ($a[1]);
              }

              EDIT: Ton array ne contient que 3 couleurs. C'est normal? Parce que dans ton autre code, tu disais que brun était sur la troisième position du array.. il est sur la 2ème (un array commence à 0 donc un array avec 3 entrées donnera [0],[1] et [2]. Pas de 3)
              0
              1. Re, et merci,

                Je viens d'essayer mais ca ne fonctionne pas non plus.

                Sniff !!!

                Amicalement
                Steph70
                0
                1. C'est selected tout court et non selected="true". ;)
                  0