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 invisibles 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 input type text caché.

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 convient d'utiliser les sessions.

Articles connexes

Les sessions Les sessions permettent de passer des variables de pages en pages, ou de conserver certaines informations pendant la durée d'une visite sur un site. Fonctionnement Une sessi...
Création d'une table avec phpMyAdmin Pour comprendre ce qu'est une base de données, le plus simple est de créer la base que tout le monde utilise au quotidien : le carnet d'adresses. Création de la base de données...
Alimenter une table MySQL via un formulaire HTML Voici le formulaire HTML permettant d'ajouter un enregistrement dans notre table carnet. ajouter.html &l...
Structuration d'un site avec include() La fonction include() permet d'inclure une portion de code située dans un fichier externe à l'intérieur d'une page. Cette instruction permet d'éviter de réécrire les parties ...
Gestion des images avec PHP Le langage PHP intègre un ensemble de fonctions relatives aux images. Il est ainsi possible de créer ses propres images dans une page, mais aussi d'obtenir des informations sur de...