Page 1 sur 1

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

Posté : 14 déc. 2007, 13:07
par blackm
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

Posté : 14 déc. 2007, 13:28
par Ryle
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" />
:)

Posté : 14 déc. 2007, 14:12
par blackm
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

Posté : 14 déc. 2007, 14:16
par Berzemus
l'ordre n'a aucune importance.

Posté : 14 déc. 2007, 14:21
par blackm
Merci je viens de trouver la solution. Il fallait que je place mon hidden input avant le select

Merci quand même ! :wink: