Php et les formulaires

Bonjour

Désolé mais je vais encore vous embêter avec une question fatalement, bête.

Voilà j'ai un formulaire :
<form action="mo_form.php" method="post" name="EnvoForm">
        <input type="Hidden" name="IdLivre" value="2">
</form>

Dans mo_form.php, j'écris echo $_POST["$IdLivre"]; et là page blanche, quelle énorme erreur ais-je fait?

Quelqu'un peut-il me renseigner ?

Merci
Cordialement
Steff
http://www.c-comnet.com

7 réponses

  1. Bonsoir Steff,

    Normal car PHP "escape" les variables passées par GET ou POST
    (du moins lorsque le paramètre magic_quotes_gpc est activé , ce qui est le cas par défaut : à vérifier cependant)

    Bref si on passe une variable nommée demo contenant "Jungle's book"
    alors
    <?echo $demo; ?> affiche Jungle\'s book

    Pour avoir un affichage correcte il suffit d'enlever les slashs :
    <? echo stripslashes($demo); ?> affiche Jungle's book

    Faire également attention à ce que les variables ne contiennent pas non plus de code HTML (sauf si c'est voulu) !

    @+

    PhP    [Push the button,Don't push the
    .         button,Trip the station,Change the channel]
    1. Bonjour

      J'ai un petit formulaire. Je récupère bien mes données.

      Sauf que lorsque j'écris un contenu du genre Jungle's Book dans ma page récapitulative j'obtiens Jungle\'s Book et quand je repasse de ma page récapitulative à mon formulaire j'obtiens Jungle\\\'s Book. Avant que je me tire une balle, quelqu'un peut-il m'aider?

      Merci
      Cordialement
      Steff
      1. Bonjour

        Un miracle de la science, sans doute, désormais avec $_POST['IdLivre'] je récupère ma valeur. Merci à tous pour votre aide.

        Merci
        Cordialement
        1. Quant au fait qu'il n'y ait pas de submit : je submit le formulaire par un javascript car je donne via le javascript la valeur à IdLivre.

          Bah, il est surement la ton probleme !
          Mets un submit bidon pour tester. Tu verras si ca fonctionne ou pas. :)

          Kalamit,
          Parle à ma culasse, mon carter est malade. :)
          1. Bonjour

            merci pour les réponses.

            voici le résultat de

            <html>
            <body>

            $IdLivre=<? echo $IdLivre; ?><br>
            $IdLivre=<? echo "$IdLivre"; ?><br>
            $IdLivre=<? echo '$IdLivre'; ?><br>
            $_POST[IdLivre]=<? echo $_POST[IdLivre]; ?><br>
            $_POST['IdLivre']=<? echo $_POST['IdLivre']; ?><br>
            $_POST["IdLivre"]=<? echo $_POST["IdLivre"]; ?><br>
            $_POST["$IdLivre"]=<? echo $_POST["$IdLivre"]; ?><br>
            $_POST['$IdLivre']=<? echo $_POST['$IdLivre']; ?><br>
            </body>
            </html>

            =>

            $IdLivre=
            $IdLivre=
            $IdLivre=$IdLivre
            $_POST[IdLivre]=
            $_POST['IdLivre']=
            $_POST["IdLivre"]=
            $_POST["$IdLivre"]=
            $_POST['$IdLivre']=

            Quant au fait qu'il n'y ait pas de submit : je submit le formulaire par un javascript car je donne via le javascript la valeur à IdLivre.

            Ayez pitié, aidez un mec désespéré.

            Merci
            Cordialement
            Steff
            1. Salut,

              <form action="mo_form.php" method="post" name="EnvoForm">
                      <input type="Hidden" name="IdLivre" value="2">
              </form>


              Le Input type=submit manquant, c'est volontaire ?

              Kalamit,
              Parle à ma culasse, mon carter est malade. :)
              1. Bonjour Steff

                Dans ton exemple la page mo_form.php récupère bien la valeur du champ dans la variable IdLivre qui vaut normalement 2.

                L'accès à cette variable peut effectivement se faire via le tableau superglobal $_POST[]

                Cependant comme tu utilises des guillemets doubles, PHP opère alors une substitution

                Comme PHP (sauf paramètrage contraire) a également créé la variable $IdLivre

                $_POST["$IdLivre"] équivaut à $_POST["2"] qui lui n'est peut être pas défini.

                Pour récuperer le contenu de IdLivre tu peux écrire :

                $_POST[IdLivre] ou $_POST["IdLivre"] ou encore $_POST['IdLivre'] ou utiliser directement $IdLivre (moins sécurisé).

                Ex :

                <html>
                <body>
                
                $IdLivre=<? echo $IdLivre; ?><br>
                $IdLivre=<? echo "$IdLivre"; ?><br>
                $IdLivre=<? echo '$IdLivre'; ?><br>
                $_POST[IdLivre]=<? echo $_POST[IdLivre]; ?><br>
                $_POST['IdLivre']=<? echo $_POST['IdLivre']; ?><br>
                $_POST["IdLivre"]=<? echo $_POST["IdLivre"]; ?><br>
                $_POST["$IdLivre"]=<? echo $_POST["$IdLivre"]; ?><br>
                $_POST['$IdLivre']=<? echo $_POST['$IdLivre']; ?><br>
                </body>
                </html>


                Tu noteras que les 2 dernières syntaxes ne renvoient rien !

                Nota : seuls les guillemets doubles (") entrainent la substitution.
                Avec des guillemets simples (') la chaîne est traitée telle quelle.

                @+

                PhP    [Push the button,Don't push the
                .         button,Trip the station,Change the channel]