Module 3 : Manipulation de formulaires,
validation et gestion des erreurs en PHP
Module 3 : Manipulation de formulaires, validation et gestion des erreurs en
PHP
1. Traitement des formulaires en PHP
Les formulaires permettent d'envoyer des données à un script PHP.
Formulaire basique :
<form method="post" action="[Link]">
Nom : <input type="text" name="nom">
Email : <input type="email" name="email">
Âge : <input type="number" name="age">
<input type="submit" value="Envoyer">
</form>
Traitement des données en PHP :
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = $_POST["nom"];
$email = $_POST["email"];
$age = $_POST["age"];
echo "Nom : $nom, Email : $email, Âge : $age";
}
2. Validation des données reçues
Validation basique des champs :
Validation de base avec empty() :
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = $_POST["nom"];
$email = $_POST["email"];
$age = $_POST["age"];
if (empty($nom) || empty($email) || empty($age)) {
echo "Tous les champs sont requis.";
} else {
// Validation réussie
echo "Données valides : Nom : $nom, Email : $email, Âge : $age";
}
}
Validation des types de données :
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = $_POST["nom"];
$email = $_POST["email"];
$age = $_POST["age"];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Adresse e-mail invalide.";
} elseif (!is_numeric($age)) {
echo "Âge doit être un nombre.";
} elseif (empty($nom) || empty($email) || empty($age)) {
echo "Tous les champs sont requis.";
} else {
echo "Données valides : Nom : $nom, Email : $email, Âge : $age";
}
}
3. Gestion des erreurs et affichage des messages d'erreur
Affichage des erreurs avec les variables de session :
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = $_POST["nom"];
$email = $_POST["email"];
$age = $_POST["age"];
if (empty($nom) || empty($email) || empty($age)) {
$_SESSION['error_message'] = "Tous les champs sont requis.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$_SESSION['error_message'] = "Adresse e-mail invalide.";
} elseif (!is_numeric($age)) {
$_SESSION['error_message'] = "Âge doit être un nombre.";
} else {
// Suppression de la session d'erreur
unset($_SESSION['error_message']);
echo "Données valides : Nom : $nom, Email : $email, Âge : $age";
}
}
Afficher les erreurs sur une autre page : [Link] :
session_start();
if (isset($_SESSION['error_message'])) {
echo $_SESSION['error_message'];
unset($_SESSION['error_message']);
}
4. Gestion des formulaires avec la méthode GET et POST
Méthode GET : Envoie les données via l'URL, visible dans la barre d'adresse.
<form method="get" action="[Link]">
Nom : <input type="text" name="nom">
Email : <input type="email" name="email">
<input type="submit" value="Envoyer">
</form>
if ($_SERVER["REQUEST_METHOD"] == "GET") {
$nom = $_GET["nom"];
$email = $_GET["email"];
echo "Nom : $nom, Email : $email";
}
Méthode POST : Envoie les données de manière sécurisée, non visible dans la barre d'adresse.
<form method="post" action="[Link]">
Nom : <input type="text" name="nom">
Email : <input type="email" name="email">
<input type="submit" value="Envoyer">
</form>
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = $_POST["nom"];
$email = $_POST["email"];
echo "Nom : $nom, Email : $email";
}
5. Envoi de formulaires et vérification des données via PDO
Connexion à la base de données avec PDO :
$pdo = new PDO('mysql:host=localhost;dbname=mon_base', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Insertion de données dans la base de données :
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = $_POST["nom"];
$email = $_POST["email"];
$stmt = $pdo->prepare("INSERT INTO utilisateurs (nom, email) VALUES
(:nom, :email)");
$stmt->bindParam(':nom', $nom);
$stmt->bindParam(':email', $email);
$stmt->execute();
echo "Utilisateur ajouté avec succès.";
}
6. Gestion des fichiers uploads en PHP
Formulaire pour l'upload de fichiers :
<form method="post" enctype="multipart/form-data">
Nom : <input type="text" name="nom">
Email : <input type="email" name="email">
Fichier : <input type="file" name="fichier">
<input type="submit" value="Envoyer">
</form>
Traitement de l'upload de fichier :
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = $_POST["nom"];
$email = $_POST["email"];
$fichier = $_FILES['fichier'];
// Validation du fichier
if ($fichier['error'] === UPLOAD_ERR_OK) {
$chemin = "uploads/" . basename($fichier['name']);
move_uploaded_file($fichier['tmp_name'], $chemin);
echo "Fichier téléchargé avec succès.";
} else {
echo "Erreur de téléchargement du fichier.";
}
}
7. Exercice pratique : Formulaire d'inscription avec validation et enregistrement
dans la base de données.
1. Formulaire d'inscription :
<form method="post" enctype="multipart/form-data">
Nom : <input type="text" name="nom" required>
Email : <input type="email" name="email" required>
Âge : <input type="number" name="age" required>
Photo : <input type="file" name="photo">
<input type="submit" value="Inscription">
</form>
2. Traitement et validation :
if ($_SERVER["REQUEST_METHOD"] == "POST") {
session_start();
$nom = $_POST["nom"];
$email = $_POST["email"];
$age = $_POST["age"];
$photo = $_FILES['photo'];
if (empty($nom) || empty($email) || empty($age)) {
$_SESSION['error_message'] = "Tous les champs sont requis.";
header("Location: [Link]");
exit();
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$_SESSION['error_message'] = "Adresse e-mail invalide.";
header("Location: [Link]");
exit();
} elseif (!is_numeric($age)) {
$_SESSION['error_message'] = "Âge doit être un nombre.";
header("Location: [Link]");
exit();
} else {
// Connexion et insertion dans la base de données
$pdo = new PDO('mysql:host=localhost;dbname=mon_base', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$chemin = "uploads/" . basename($photo['name']);
move_uploaded_file($photo['tmp_name'], $chemin);
$stmt = $pdo->prepare("INSERT INTO utilisateurs (nom, email, age,
photo) VALUES (:nom, :email, :age, :photo)");
$stmt->bindParam(':nom', $nom);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':age', $age);
$stmt->bindParam(':photo', $chemin);
$stmt->execute();
unset($_SESSION['error_message']);
echo "Utilisateur enregistré avec succès.";
}
}
Ce module vous a montré comment gérer et valider les formulaires, traiter les erreurs et interagir avec
des bases de données via PHP. Si vous avez besoin de plus d'exemples ou d'explications, n'hésitez
pas à demander !