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

Langage PHP : Hypertext Preprocessor Une des différences fondamentales entre les langages PHP et JavaScript est que le PHP est exécuté depuis un serveur distant, alors que le JavaScript est exécuté par le naviga...
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
Lire les données d’un formulaire sur plusieurs pag... 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 autr...
Les sessions Les sessions permettent de passer des variables de pages en pages, ou de conserver certaines informations pendant la durée d'une visite sur un site. Fonctionnement Une sessi...
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...