Ajouter des enregistrements
Principe
Pour ajouter un nouvel enregistrement il faut :
Réaliser un formulaire.
Récupérer et enregistrer les données.
Méthode : Le formulaire
Le formulaire d'ajout correspond aux différents champs de la table que l'utilisateur doit renseigner.
<form action='' method='post'>
<div>
<label>Nom</label>
<input type='text' name='nom' />
</div>
<div>
<label>Prénom</label>
<input type='checkbox' name='prenom' />
</div>
<div>
<label>Enregistrer</label>
<input type='submit' value='cliquez pour enregistrer' />
</div>
</form>
L'action du formulaire étant vide, c'est le fichier lui-même qui sera appelé pour traiter le formulaire.

Méthode : Traitement 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.
// ouverture de la connexion
...
// traitement
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// récupération des données du formulaire
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
// création de la requête
$sql = "INSERT INTO auteurs
(nom, prenom)
VALUES
('{$_POST['nom']}', '{$_POST['prenom']}')";
// envoi de la requête
$db->exec($sql);
// redirection
header("Location:index.php");
exit();
}
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.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
...
}
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.
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
On ajoute les variables à la table :
// création de la requête
$sql = "INSERT INTO auteurs
(nom, prenom)
VALUES
('{$_POST['nom']}', '{$_POST['prenom']}')";
// envoi de la requête
$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 :
"INSERT INTO auteurs (nom, prenom) VALUES ('Dupont', 'Jean')"
A la fin du traitement, on peut rediriger vers une autre page :
// redirection
header("Location:index.php");
exit();