Action

Méthode$_SERVER

Souvent en PHP, un formulaire s'appelle lui-même.

C'est à dire que la page d'affichage et de traitement sont la même.

Dans ce cas, on ne précise pas la page de traitement dans l'attribut action.

1
<form action='' method='post'>

Le codage de l'affichage et du traitement du formulaire se trouve dans la même page.

La difficulté est de comprendre que l'on traite le formulaire envoyé par la page précédente.

Le traitement n'est réalisé que s'il y a eu l'envoie de données.

Nous devons donc traiter le tableau $_POST que s'il existe.

Pour cela, nous utilisons la superglobale $_SERVER qui nous indique si des données ont bien été envoyées par la méthode POST.

1
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
2
  var_dump($_POST);
3
}

Ce qui donne :

1
<?php
2
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
3
  var_dump($_POST);
4
}
5
?>
6
<form action='' method='post'>
7
<div>
8
  <label>variable1</label>
9
  <input type='text' name='var1' />
10
</div>
11
<div>
12
  <label>variable2</label>
13
  <input type='text' name='var2' />
14
</div>
15
<div>
16
  <label>Valider</label>
17
  <input type='submit' value='valider'/>
18
</div>
19
</form>

Cet exemple affiche un formulaire vide, puis après validation affiche la variable $_POST et affiche de nouveau le formulaire vide, et ainsi de suite.

MéthodeUn seul formulaire

Dans certain cas, on ne veut la saisie que d'un seul formulaire.

Pour cela, il suffit à la fin du traitement de rediriger la navigation vers une autre page et d'indiquer que la tâche est terminée.

1
<?php
2
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
3
  var_dump($_POST);
4
  header("Location:accueil.php");
5
  exit();
6
}
7
?>
8
<form action='' method='post'>
9
<div>
10
  <label>variable1</label>
11
  <input type='text' name='var1' />
12
</div>
13
<div>
14
  <label>variable2</label>
15
  <input type='text' name='var2' />
16
</div>
17
<div>
18
  <label>Valider</label>
19
  <input type='submit' value='valider'/>
20
</div>
21
</form>