OVH Cloud OVH Cloud

Probleme avec le passage de variable dans un include.

2 réponses
Avatar
geo75
Bonjour,

Je ne sais pas ou chercher pour resoudre mon probleme. Car il est assez
bizarre mais surement commun.

J'ai les deux scripts suivant:

Index.php :
<A HREF="index.php">Accueil</A> | <A
HREF="index.php?lien=contactezmoi">contact.php</A>
<?
switch ($lien)
{
case "contactezmoi":
include("contact.php");
break;
}
?>

et le formulaire suivant.

contact.php :
<FORM METHOD=GET ACTION="<?=$_SERVER['REQUEST_URI']?>">
<INPUT TYPE="text" NAME="val" value="<?=$_GET['val']?>-TEST"> Nom
<INPUT TYPE="submit" value="update" NAME="submit">
</FORM>

Je souhaite modifier le formulaire appelé depuis la page index.php.

Ma variable $_SERVER['REQUEST_URI'] donne ceci : index.php?lien=contact

Le probleme viens quand j'appui sur submit.

J'ai index.php?ceciestun-TEST&submit=update au lieu de
index.php?lien=contact&val=ceciestun-TEST&submit=update.

Ma question est : ou est passé mon 'lien=contact' que pourtant
"$_SERVER['REQUEST_URI']" affiche correctement.

Si dans ACTION je mets ACTION="form.php", le resultat est OK, mais je
sort de ma page index.php.

Merci si quelqu'un pouvais m'eclairer.

2 réponses

Avatar
Benoit F
Bonsoir,

switch ($lien)
Bon on va dire qu'on lit $_GET['lien'] ;-) de toute façon le problème

n'est pas là.

<FORM METHOD=GET ACTION="<?=$_SERVER['REQUEST_URI']?>">
Le problème est là, il est lié à l'interprétation différente que tu fait

du HTML par rapport à celle du navigateur.

Pense que le FORM (method="GET") *ajoute* des arguments à l'"action" est
une erreur. Le navigateur n'utilise comme arguments à la requete de
l'"action" que les différents input. Ainsi le "?lien=contact" n'est pas
pris en compte.
En revanche, tu aurait mis un method="POST", les arguments étant passé
différemment, ça aurait marché.
La solution la plus "propre" est encore de mettre un champ "hidden" dns
le formulaire :
<input type="hidden" name="lien" value="contact" />

Bonne chance

--
Benoit F.

Avatar
geo75
Genial merci benoit.
Je vais tester ca.


Bonsoir,

switch ($lien)
Bon on va dire qu'on lit $_GET['lien'] ;-) de toute façon le problème

n'est pas là.

<FORM METHOD=GET ACTION="<?=$_SERVER['REQUEST_URI']?>">
Le problème est là, il est lié à l'interprétation différente que tu fait

du HTML par rapport à celle du navigateur.

Pense que le FORM (method="GET") *ajoute* des arguments à l'"action" est
une erreur. Le navigateur n'utilise comme arguments à la requete de
l'"action" que les différents input. Ainsi le "?lien=contact" n'est pas
pris en compte.
En revanche, tu aurait mis un method="POST", les arguments étant passé
différemment, ça aurait marché.
La solution la plus "propre" est encore de mettre un champ "hidden" dns
le formulaire :
<input type="hidden" name="lien" value="contact" />

Bonne chance

--
Benoit F.