Forum de discussion
Forum « Programmation PHP » (archives)
Re: Formulaire sur plusieurs pages HTML
Envoyé: 17 avril 2004, 9h49 par Oznog
C'est domage que l'ont doivent toujours jouer à la police. J'étais près à répondre hier mais le mot "urgent" m'oblige à attendre selon la politique du forum.
Alors voilà, tu as deux solution, ou bien tu utilise une session comme parle nicordi (qui utilise les cookies de façon caché) et ainsi stocker les valeurs en mémoire et les récupérer tout au long de la session.
Mais contrairemnt a nicordi selon moi l'idéale consiste à utiliser les éléments cachés d'un formulaire. Élément de type "hidden". En Javascript c'est pas mal complexe mais avec un langage serveur c'est beaucoup plus simple car récupérer les valeurs de l'en-tête HTTP se fait tout simplement par $monChampDeFormulaire.
Alors l'idée est de récupérer les données du formulaire précédent et de les stocker dans un champ caché afins d'y accéder dans le formulaire suivant.
MAIS ATTENTION, tu dois aussi gérer le cas où le visiteur décide de revenir au formulaire précédent. C'est pourquoi le meilleurs méthode consiste à :
1. Tu imagine à l'avance 100% des formulaires, c'est à dire tous les formulaire (Musiciens, Musiciens_2, Musiciens_3...) dans la même page.
2. Tous les champs qui doivent se retrouver sur les formulaires précédent ou les formulaires suivant doivent être convertie en champ caché.
Ex:
J'ai une champ de type "input" monTexte <input type="text" name="monTexte"> je dois mettre <imput type="hidden" name="monTexte">
L'astuce est que peut importe la façon, les deux se récupère ainsi $monTexte!
Tu peux donc mettre sur tous les formulaire :
<input type="hidden" name="monTexte" value="<? echo($monTexte) ?>">
3. Exemple simple avec un formulaire sur Musiciens.html qui contient le champ monTexte1 alors que la page Musiciens_2.html contient le champ monTexte2.
// Musiciens.html
<input type="text" name="monTexte1" value="<? echo($monTexte1) ?>">
<input type="hidden" name="monTexte2" value="<? echo($monTexte2) ?>">
// Musiciens_2.html
<input type="hidden" name="monTexte1" value="<? echo($monTexte1) ?>">
<input type="text" name="monTexte2" value="<? echo($monTexte2) ?>">
Tu peux donc passer d'une page à l'autre sans jamais perder une valeur.
C'est comme ça pour chacune des pages et chacun des champ.
4. Champ select, radio, checkbox.
Quand tu as plusieurs élément c'est aussi le même procédé.
ex:
<select name="maSelection"...
<option...
Sur la seconde page
<input type="hidden" name="maSelection" value="<? echo($maSelection) ?>">
MAIS pour récupérer le choix sélectionné dans la sélection tu dois générer quelque chose comme :
maSelection
<select name="maSelection"...
<option value"1"
<? if ($maSelection=='1') echo('selected') ?>>Choix 1</option>
<option value"2"
<? if ($maSelection=='2') echo('selected') ?>>Choix 1</option>
...
Même chose pour les "radio buttons" ou "checkboxs".
Ciao
Oznog
Réponses
|