Page 1 sur 1

Probleme de formulaire avec champs cachés

Posté : 01 nov. 2009, 05:16
par b3f3
Bonjour,
J'ai un problème pour renvoyer plusieurs éléments de l'option "action" d'un formulaire.
Je m'explique, voici mon code :
<form method="get" action="index.php?page=$page&do=$do&id=<?php  echo $_GET['id']; ?>">
   <?php
   foreach($_GET as $page=>$value)
   {
      echo '<input type="hidden" name="'.$page.'" value="page1" />';
   }
   foreach($_GET as $do=>$value)
   {
      echo '<input type="hidden" name="'.$do.'" value="show" />';
   }
   ?>
   <label for="id">Numéro de client :</label><input type="text" id="id" name="id"/>
   <input type="submit" name="go" value="Valider" />
</form>
Si je saisi 10005 dans le champs id, l'url obtenue est la suivante :
>http://127.0.0.1/index.php?page=page1&p ... go=Valider
Alors que je souhaite obtenir :
>http://127.0.0.1/index.php?page=page1&do=show&id=10005
Ou éventuellement :
>http://127.0.0.1/index.php?page=page1&d ... en=Valider

Quelqu'un peut-il m'aider ?
Merci.

Re: Probleme de formulaire avec champs cachés

Posté : 01 nov. 2009, 11:32
par Ryle
Il y a deux choses à distinguer :
- l'attribut action de ton formulaire, qui contient l'url de la page qui va traiter les données
- les valeurs du formulaire, renseignées par l'utilisateur.

A voir les champs ton formulaire, il suffit simplement que dans l'action tu renseignes "index.php".
Les données étant transmises en get, l'url sera complétée par chacun des champs de ton formulaire et les valeurs saisies par l'utilisateur (tu auras donc automatiquement un id=valeur_saisie dans l'url)


Par ailleurs, cette partie de code me semble très curieuse:
   <?php
   foreach($_GET as $page=>$value)
   {
      echo '<input type="hidden" name="'.$page.'" value="page1" />';
   }
   foreach($_GET as $do=>$value)
   {
      echo '<input type="hidden" name="'.$do.'" value="show" />';
   }
   ?>
En effet, si l'url de la page qui ouvre ton formulaire comporte plusieurs attribut (ex "page", "do" et "id"), ce code va te générer le code html suivant :
<input type="hidden" name="page" value="page1" />
<input type="hidden" name="do" value="page1" />
<input type="hidden" name="id" value="page1" />
<input type="hidden" name="page" value="show" />
<input type="hidden" name="do" value="show" />
<input type="hidden" name="id" value="show" />
Ce qui n'a vraissemblablement aucun sens par rapport à ce que tu essayes de faire....

Re: Probleme de formulaire avec champs cachés

Posté : 01 nov. 2009, 11:56
par b3f3
A voir les champs ton formulaire, il suffit simplement que dans l'action tu renseignes "index.php".
Les données étant transmises en get, l'url sera complétée par chacun des champs de ton formulaire et les valeurs saisies par l'utilisateur (tu auras donc automatiquement un id=valeur_saisie dans l'url)
Effectivement, j'ai essayé avec "index.php" et l'id saisi dans le formulaire se retrouve bien dans l'url.
Par ailleurs, cette partie de code me semble très curieuse:
   <?php
   foreach($_GET as $page=>$value)
   {
      echo '<input type="hidden" name="'.$page.'" value="page1" />';
   }
   foreach($_GET as $do=>$value)
   {
      echo '<input type="hidden" name="'.$do.'" value="show" />';
   }
   ?>
Ca c'est parce que j'ai bêtement recopié du code que l'on m'a donné ici : php-debutant/envoyer-donnees-formulaire ... 50595.html sans comprendre à quoi sert foreach... [honte]

Donc grace à toi, mon formulaire fonctionne. Merci !!!

Pour ceux qui veulent la solution :
<form method="get" action="index.php">
   <?php
   echo '<input type="hidden" name="page" value="page1" />';
   echo '<input type="hidden" name="do" value="show" />';
   ?>
   <label for="id">Numéro de client :</label><input type="text" id="id" name="id"/>
   <input type="submit" name="numpraticien" value="Valider" />
/form>
Bonne journée Ryle