Ajouter des enregistrements

Principe

Pour ajouter un nouvel enregistrement il faut :

  • Réaliser un formulaire.

  • Récupérer et enregistrer les données.

MéthodeLe formulaire

Le formulaire d'ajout correspond aux différents champs de la table que l'utilisateur doit renseigner.

1
<form action='' method='post'>
2
  <div>
3
    <label>Nom</label>
4
    <input type='text' name='nom' />
5
  </div>
6
  <div>
7
    <label>Prénom</label>
8
    <input type='checkbox' name='prenom' />
9
  </div>
10
  <div>
11
    <label>Enregistrer</label>
12
    <input type='submit' value='cliquez pour enregistrer' />
13
  </div>
14
</form>

L'action du formulaire étant vide, c'est le fichier lui-même qui sera appelé pour traiter le formulaire.

Formulaire Ajouter

MéthodeTraitement du formulaire

Le traitement du formulaire se fait dans le haut de la page.

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

1
<?php
2
// ouverture de la connexion
3
...
4
// traitement
5
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
6
    // récupération des données du formulaire
7
    $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
8
9
    // création de la requête
10
    $sql = "INSERT INTO auteurs
11
              (nom, prenom)
12
            VALUES
13
              ('{$_POST['nom']}', '{$_POST['prenom']}')";
14
    // envoi de la requête      
15
    $db->exec($sql);
16
17
    //  redirection
18
    header("Location:index.php");
19
    exit();
20
}
21
?>

On réalise le traitement que si c'est le formulaire qui a appelé la page.

C'est à dire, si des données ont été envoyées par la méthode POST.

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

Les variables que vous recevez doivent être nettoyées.

Afin de ne pas être en conflit avec les caractères spécifiques de votre requête SQL et de vos pages HTML, une fonction convertit les caractères spéciaux en entités HTML.

1
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_FULL_SPECIAL_CHARS);

On ajoute les variables à la table :

1
    // création de la requête
2
    $sql = "INSERT INTO auteurs
3
              (nom, prenom)
4
            VALUES
5
              ('{$_POST['nom']}', '{$_POST['prenom']}')";
6
    // envoi de la requête      
7
    $db->exec($sql);

La chaîne de caractères suivante est générée et affectée à la variable $sql qui est envoyée à la base de données :

1
"INSERT INTO auteurs (nom, prenom) VALUES ('Dupont', 'Jean')"

A la fin du traitement, on peut rediriger vers une autre page  :

1
// redirection
2
header("Location:index.php");
3
exit();