[Réglé] Problème de variable avec GET

Petit nouveau ! | 3 Messages

14 déc. 2007, 13:07

Bonjour,
Je suis debutant en PHP et j'ai un petit soucie avec le passage des variables avec la methode Get.
J'ai une page avec des liens du Types : http://www.monsite.com/index.php?page=mapage qui me permet de faire un include de chacune de mes pages dans l'index.php qui reste fixe.

J'ai un script php qui utilise la methode get dans un formulaire comme ceci :

Code : Tout sélectionner

<form name="form1" method="Get" action=""> <p> <select name="champ"> <option value="var1">var1</option> </select> <input type="submit" name="Submit" value="Envoyer"> </p> </form>
Mon soucie est que lorsque je passe les variables dans l'url j'arrive à une url de la forme suivante :

http://www.monsite.com/index.php?champ=var1

qui donne une page d'erreur puisque je devrais avoir normalement

http://www.monsite.com/index.php?page=mapage&champ=var1

Pour que l'include fonctionne. J'ai tout essayer à mon niveau mais à chaque fois il me remplace tout ce que je met après le ? pour me mettre champ=var1. Quelqu'un peut il m'aider ?

Merci
Modifié en dernier par blackm le 14 déc. 2007, 14:22, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 déc. 2007, 13:28

Il te faut effectivement renvoyer dans l'url les paramètres dont tu as besoin pour afficher la bonne page. Deux solution pour cela, les spécifier dans l'action du formulaire :
<form name="form1" method="Get" action="<?php $_SERVER['PHP_SELF'];?>?page=mapage">
Le <?php $_SERVER['PHP_SELF'];?> retournant en fait le nom de la page courrante, il n'est pas obligatoire, mais c'est plus propre de le mettre à mon avis :)

Soit le spécifier dans un champ caché du formulaire, puisque celui-ci est envoyé en get :

Code : Tout sélectionner

<input type="hidden" name="page" value="mapage" />
:)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

14 déc. 2007, 14:12

Merci Ryle mais petite précision mon scripte se trouve déjà sur une page donc l'URL de départ est déjà

http://www.monsite.com/index.php?page=mapage sur laquelle j'ai donc le formulaire
Lorsque j'utilise :
<form name="form1" method="Get" action="<?php $_SERVER['PHP_SELF'];?>?page=mapage"> 
Ca ne marche pas http://www.monsite.com/index.php?page=mapage est systématiquement remplacé par http://www.monsite.com/index.php?champ=1

Par contre lorsque je passe par un input hiden j'ai bien la modif mais le mapage se place à la fin de l'url c'est a dire


http://www.monsite.com/index.php?champ=1&page=mapage au lieu d'avoir
http://www.monsite.com/index.php?page=mapage&champ=1

voici le code du formulaire
  <form method="Get" action=""><div align="center">
	   <select name="champ">
         <option value="0">Choisissez un championnat</option>
    <?php       
       $query = "SELECT ...";
       $result = mysql_query($query) or die (mysql_error());
           while ($row = mysql_fetch_array($result))
           {
		   	   echo ("<option value=\"$row[2]\">$row[0]\n $row[1]/". ($row[1]+1)."\n");
               echo ("</option>\n");
           }
       $button=ENVOI;
   ?>
        </select>
        <?php   
		  if (isset($value)){ echo "value=$value";echo "<input type=\"hidden\" name=\"type\" value=\"$value\">";}
	     ?>
        <input type="submit" value="<?php print $button; ?>"></div></form

ViPHP
ViPHP | 4039 Messages

14 déc. 2007, 14:16

l'ordre n'a aucune importance.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Petit nouveau ! | 3 Messages

14 déc. 2007, 14:21

Merci je viens de trouver la solution. Il fallait que je place mon hidden input avant le select

Merci quand même ! :wink: