Alimenter une table MySQL via un formulaire HTML

Voici le formulaire HTML permettant d'ajouter un enregistrement dans notre table carnet.

ajouter.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		<h1>Ajouter un contact</h1>
		<form method="post" action="ajouter.php">
			<label>Civilité</label>
			<select name="civilite">
				<option value="Madame">Madame</option>
				<option value="Monsieur" selected>Monsieur</option>
			</select>
			<br>
			<label>Prénom</label> <input type="text" name="prenom">
			<label>Nom</label> <input type="text" name="nom">
			<label>Email</label> <input type="email" name="email">
			<label>Date de naissance</label> <input type="date" name="date_naissance">
			<input type="submit" value="Ajouter">
		</form>
	</body> 
</html>

Le formulaire HTML ci-dessus contient des zones de texte comportant des attributs name. Les valeurs de ces attributs seront récupérées dans les variables du tableau associatif $_POST.

Pour finir, une requête SQL INSERT INTO permettra d’ajouter une ligne dans la table carnet.

Le but est d’obtenir, grâce aux concaténations des variables et des textes, une requête SQL de la forme suivante :

INSERT INTO carnet VALUE(NULL,"Monsieur","Pierre","Richard","pierre@free.fr","1940-10-13")

La première "anti-valeur" NULL, correspond à la clé primaire numero de la table carnet. Ce champ n'a pas besoin d'être renseigné car il s'incrémente à chaque nouvel enregistrement.

ajouter.php

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		<h1>Ajouter un contact</h1>
		<?php
		$mysqli = new mysqli('localhost', 'root', 'root', 'essai');
		$mysqli->set_charset("utf8");
		$requete='INSERT INTO carnet VALUES(NULL,"'.$_POST['civilite'].'","'.$_POST['prenom'].'","'.$_POST['nom'].'","'.$_POST['email'].'","'.$_POST['date_naissance'].'")';
		$resultat = $mysqli->query($requete);
		if ($resultat)
			echo "<p>Le contact a été ajouté</p>";
		else
			echo "<p>Erreur</p>";
		?>
	</body> 
</html>

Une seule page avec isset()

La balise <form> ci-dessous a été allégée de son attribut action=ajouter.php. Par conséquent, la page contenant le formulaire sera elle-même exécutée lors du clic sur le bouton Ajouter.

La fonction isset() permet de vérifier l'existence d'une variable. Dans le code ci-dessous, on analyse l'existence de la variable $_POST['prenom'], ce qui permet de savoir si le formulaire a été soumis ou pas. Cette condition nous permet de fusionner élégamment les deux codes précédents en une seule page.

ajouter.php

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		<h1>Ajouter un contact</h1>
		<form method="post">
			<label>Civilité</label>
			<select name="civilite">
				<option value="Madame">Madame</option>
				<option value="Monsieur" selected>Monsieur</option>
			</select>
			<br>
			<label>Prénom</label> <input type="text" name="prenom">
			<label>Nom</label> <input type="text" name="nom">
			<label>Email</label> <input type="email" name="email">
			<label>Date de naissance</label> <input type="date" name="date_naissance">
			<br>
			<input type="submit" value="Ajouter">
		</form>
		<p>
		<?php
		if (isset($_POST['prenom'])) {
			$mysqli = new mysqli('localhost', 'root', 'root', 'essai');
			$mysqli->set_charset('utf8');
			$requete='INSERT INTO carnet VALUES(NULL,"'.$_POST['civilite'].'","'.$_POST['prenom'].'","'.$_POST['nom'].'","'.$_POST['email'].'","'.$_POST['date_naissance'].'")';
			$resultat = $mysqli->query($requete);
			if ($resultat)
				echo 'Le contact a été ajouté';
			else
				echo 'Erreur';
		}
		?>
		</p>
	</body> 
</html>

Articles connexes

Instruction conditionnelle : Quel âge as-tu ? Quel âge as-tu ? Voilà la question que nous allons poser aux internautes via un petit formulaire HTML. Le langage PHP se chargera de répondre selon l'âge saisi grâce à l'instru...
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...
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...
Newsletter Avant de concevoir une newsletter, il convient de maitriser la fonction mail(). Quelques rappels : Envoi d'un email en texte brut ...
Envoi du contenu d'un formulaire vers un email La rubrique Contact est  la page incontournable des sites de présentation. Voici quelques solutions pour recevoir des messages. Le "mailto" La formule la plus simple co...