Comment faire un formulaire en PHP/MySQL?

Un formulaire HTML est un composant essentiel lors du développement Web. Il nous permet de recueillir des données auprès de différents utilisateurs. Dans ce tutoriel nous allons créer un formulaire HTML simple qui collectera les données de l’utilisateur, telles que le nom d’utilisateur et l’adresse e-mail. En utilisant PHP, nous enregistrerons les données collectées dans notre table de base de données MySql. Il s’agit d’un scénario courant dans le développement Web, dans lequel nous avons souvent besoin de stocker diverses informations à propos de l’utilisateurs.
 
 

Étape 1: Créer un formulaire HTML
<html>
	<head>
		<title>Formulaire en PHP/MySQL</title>
	</head>
	<body>
		<form method="post" action="controller.php">
			Name : <input type="text" name="name" placeholder="Entrez votre nom" /><br />
			Email : <input type="email" name="email" placeholder="Entrer votre Email" /><br />
			<input type="submit" value="Submit" />
		</form>
	</body>
</html>

Comme vous pouvez le voir en HTML ci-dessus, on a la balise <form> </ form>, qui contient deux inputs, telles que le nom d’utilisateur et l’e-mail, et vous pouvez toujours ajouter d’autres input si vous souhaitez collecter davantage de données auprès de l’utilisateur. Ces inputs peuvent avoir différents attributs, tels que le nom de l’input, son type, sa longueur maximale, etc. Même si nous n’avons besoin que de l’attributs « name » et « type », nous pouvons toujours jouer avec d’autres attributs selon les besoins de notre projet.
 

Étape 2: page de traitement PHP

Notre formulaire HTML est prêt à recevoir les entrées des utilisateurs. Nous devons maintenant créer une page PHP pour collecter des données à partir de ce formulaire. PHP est un langage de programmation web côté serveur, il effectue toutes les tâches sur le serveur et les utilisateurs finaux ne voient rien sauf s’il y a des erreurs ou des résultats. Remarquez-vous l’attribut « action » dans la balise de formulaire HTML ci-dessus? Cela pointe sur « controller.php » et signifie que toutes les valeurs des champs d’entrée seront envoyées à « controller.php ». Tout ce dont nous avons besoin maintenant, c’est de créer « controller.php ». Pour simplement récupérer les valeurs capturées via le formulaire HTML, nous pouvons écrire quelque chose comme ceci:
 
 

<?php
	// Vérifie qu'il provient d'un formulaire
	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		$name = $_POST["name"]; 
		$email = $_POST["email"];
		
		if (!isset($name)){
			die("S'il vous plaît entrez votre nom");
		}
		if (!isset($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)){
			die("S'il vous plaît entrez votre adresse e-mail");
		}
		
		print "Salut " . $name . "!, votre adresse e-mail est ". $email;
	}
?>

Nous avons utilisé filter_vars pour valider l’adresse e-mail de l’utilisateur, donc n’oubliez jamais de vérifier les données non valides à chaque fois que vous en aurez besoin.
 

Étape 3: Stockage des données dans MySql

En utilisant l’interface PhpMyAdmin, vous pouvez facilement créer une nouvelle table pour stocker les informations de l’utilisateur. Vous pouvez aussi copier/coller le code ci-dessous, il va créer une nouvelle table appelée « users » pour vous dans MySql>.

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL,
  `name` varchar(120) NOT NULL,
  `email` varchar(120) NOT NULL,
)AUTO_INCREMENT=1 ;

ALTER TABLE `users` ADD PRIMARY KEY (`id`);

ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

 
 
Une fois que nous avons la table de base de données, nous pouvons continuer à travailler sur « controller.php ». Comme vous pouvez le voir dans l’exemple ci-dessous, nous avons ajouté quelques codes PHP supplémentaires. En plus du code, nous avons ajouté les informations de connexion MySql qui seront utilisées pour se connecter à la base de données MySql. Une fois la connexion ouverte, en utilisant la requête MySql INSERT, nous stockons les entrées de l’utilisateur dans la table de la base de données.

<?php
	// Vérifie qu'il provient d'un formulaire
	if ($_SERVER["REQUEST_METHOD"] == "POST") {

		//identifiants mysql
		$host = "localhost";
		$username = "root";
		$password = "";
		$database = "users";
		
		$name = $_POST["name"]; 
		$email = $_POST["email"];

		if (!isset($name)){
			die("S'il vous plaît entrez votre nom");
		}
		if (!isset($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)){
			die("S'il vous plaît entrez votre adresse e-mail");
		}	

		//Ouvrir une nouvelle connexion au serveur MySQL
		$mysqli = new mysqli($host, $username, $password, $database);
		
		//Afficher toute erreur de connexion
		if ($mysqli->connect_error) {
			die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
		}	
		
		//préparer la requête d'insertion SQL
		$statement = $mysqli->prepare("INSERT INTO users (name, email) VALUES(?, ?)"); 
		//Associer les valeurs et exécuter la requête d'insertion
		$statement->bind_param('ss', $name, $email); 
		
		if($statement->execute()){
			print "Salut " . $name . "!, votre adresse e-mail est ". $email;
		}else{
			print $mysqli->error; 
		}
	}
?>

La page controller.php est maintenant prêt à collecter des données à partir du formulaire HTML.
 
 
QCM sur PHP

9 réflexions sur “Comment faire un formulaire en PHP/MySQL?

  • mars 29, 2020 à 2:29 pm
    Permalien

    Bonjour, je pense qu’il y a une erreur dans le code proposé :

     //préparer la requête d'insertion SQL
     $statement = $mysqli->prepare("INSERT INTO users (name, email) VALUES(?, ?)"); 
     //Associer les valeurs et exécuter la requête d'insertion
     $statement->bind_param('sss', $name, $email);

    $statement->bind_param('ss', $name, $email); (seulement 2 S

    Répondre
    • mars 29, 2020 à 6:03 pm
      Permalien

      Merci pour cette remarque, c’est corrigé 🙂

      Puisqu’on a que deux String ($name et $email) donc deux ‘s’ est suffisant.

      Répondre
  • avril 28, 2021 à 8:37 pm
    Permalien

    Bonjour
    une erreur s’affiche lorsque je créé la base dans Mysql (Type et version
    MySQL 5.7)

    )AUTO_INCREMENT=1 ;
    erreur >> un nom de variable était attendu !(prés de) )

    Répondre
  • octobre 1, 2021 à 2:11 pm
    Permalien

    ca ne fonctionne pas chez moi lorsque je clique sur envoyé ca m’affiche le contenu de controller.php

    Répondre
  • décembre 20, 2021 à 1:00 pm
    Permalien

    Bonjour,
    Ce script ne fonctionne pas !
    Il y a une erreur sur cette ligne
    $statement->bind_param(sss, $nom, $prenom, $lundi);

    (Avertissement: Utilisation de la constante non définie sss – supposé ‘sss’ (cela lancera une erreur dans une future version de PHP)

    J’ai également modifié cette ligne :
    $statement = $mysqli->prepare(« INSERT INTO inscriptions (nom, prenom, lundi) VALUES(?, ?, ?) »);
    J’ai ajouté un « ? » vu que j’ai 3 champs
    Quelqu’un pour me guider ?
    Merci

    Répondre
    • janvier 22, 2022 à 8:36 pm
      Permalien

      Quel version de PHP vous utiliser?

      Répondre
  • octobre 6, 2022 à 3:57 pm
    Permalien

    Bonjour,

    J’ai du mal a comprendre ou enfin dans quel fichier je doit inseret le code SQL, dans controller.php? ou bien dans une page .sql?

    Répondre
    • octobre 9, 2022 à 9:33 am
      Permalien

      Utiliser PhpMyAdmin ou l’unité de commande MySQL.

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *