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