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

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...
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 ...
Tableau associatif $_GET Le tableau $_GET permet de transmettre des valeurs de variables vers une autre page en passant par la barre d'adresse du navigateur. Intérêt de la méthode GET L'in...
Lire et afficher une table MySQL Affichage du contenu de la table carnet dans une page HTML Voici un code PHP pour lire et afficher le contenu de la table carnet dans une page HTML. affichage.php
Alimenter une table MySQL via un formulaire HTML Voici le formulaire HTML permettant d'ajouter un enregistrement dans notre table carnet. ajouter.html &l...