Lire les données d’un formulaire sur plusieurs pages
En cliquant sur un bouton de formulaire, la variable est conservée sur la prochaine page grâce à la méthode POST. En revanche, la variable est oubliée si on enchaîne vers une autre page.
Voici un exemple de qui permet de conserver toutes les valeurs sur 3 pages pour les récapituler à la fin.
L'astuce <input type="hidden">
Le secret réside dans la répétition de champs masqués qui permettent de mémoriser le contenu des variables :
<input type="hidden" name="processeur" value="<?php echo $_POST['processeur']; ?>">
Page processeur.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Configuration de votre ordinateur</h1>
<h2>Choix du processeur :</h2>
<form method="post" action="graphique.php">
<label>Intel Core i7</label>
<input type="radio" name="processeur" value="Intel Core i7" checked>
<label>AMD FX</label>
<input type="radio" name="processeur" value="AMD FX">
<input type="submit" value="Choisir">
</form>
</body>
</html>
Page graphique.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Configuration de votre ordinateur</h1>
<dt>Vous avez choisi une unité centrale comprenant :</dt>
<dd>Un processeur <?php echo $_POST['processeur']; ?></dd>
<h2>Choix de la carte graphique :</h2>
<form method="post" action="fin.php">
<label>AMD Radeon HD7750</label>
<input type="radio" name="graphique" value="AMD Radeon HD7750" checked>
<label>NVIDIA GeForce GTX 590</label>
<input type="radio" name="graphique" value="GeForce GTX 590">
<input type="hidden" name="processeur" value="<?php echo $_POST['processeur']; ?>">
<input type="submit" value="Choisir">
</form>
</body>
</html>
Dans cette page, le champ type hidden permet de répéter la valeur du processeur sur la prochaine page de manière invisible pour l'internaute. Cela fonctionne comme un champ de texte masqué.
Page fin.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Configuration de votre ordinateur</h1>
<dt>Vous avez choisi une unité centrale comprenant :</dt>
<dd>Un processeur <?php echo $_POST['processeur']; ?></dd>
<dd>Une carte graphique <?php echo $_POST['graphique']; ?></dd>
</body>
</html>
Cette astuce fonctionne, mais si l'on souhaite plus de confort pour conserver des valeurs sur plusieurs pages, il conviendra d'utiliser les sessions.