Vous êtes sur la page 1sur 3

Université de La Rochelle

Php
Exercice complémentaire

Objectif : Créer un formulaire de contact qui enregistre chaque soumission dans une base de
données. Les données saisies par l’internaute seront vérifiées avant leur traitement.
Le site devra être visible sur le serveur lpmiaw dans le dossier exoSupPhp.

I) Créer la table
1. Créer une nouvelle table nommée php_contacts

2. Créer 6 colonnes :

a. id : qui sera la clé primaire auto incrémentée


b. nom : type varchar de 50 caractères
c. prenom : type varchar de 50 caractères
d. email : type varchar de 200 caractères
e. age : type tinyint
f. message : type TEXTE
g. dt_crea : type timestamp avec valeur par défaut current_timestamp

II)Enregistrement
Le formulaire sera soumis avec la méthode POST à la page script.php.
Dans un premier temps, nous n’effectuerons aucun contrôle sur les valeurs.
1. Créez le code permettant d’enregistrer dans la table contact les éléments du formulaire
2. En cas de succès, il faut rediriger l’utilisateur sur la page index en affichant le bon message.
Pour cela vous utiliserez l’url index.php?etat=ok

III) Premiers contrôles de saisie


Pour le moment nous n’avons vérifié aucune des données saisies par l’internaute, il est donc
possible, par exemple, de valider le formulaire vide et de créer un enregistrement vide dans la base
de données. Ce que nous ne souhaitons pas.

Nous allons effectuer quelques contrôles basiques dans un premier temps.

Nous n’utiliserons pas html (avec required par exemple) ou javascript pour vérifier les données afin
de nous concentrer sur le traitement serveur en php. Les contrôles de données côté client ne sont
jamais suffisants et doivent toujours être doublés d’un contrôle côté serveur.

Page 1/3
Université de La Rochelle
Php
1. Créer une variable error avec une valeur à false en début de script
2. Utilisez des conditions pour affecter la valeur true à error si les champs nom ou prénom
sont vides.
3. Votre script ne doit créer une entrée dans la base de données que s’il n’y a pas d’erreur. S’il
y a une erreur il faudra rediriger vers la page index.php?etat=ko La variable d’url
vous servira à afficher un message d’erreur.

IV) Réaffichage des données


À cette étape, lorsqu’il y a une erreur dans le formulaire, le message d’erreur s’affiche, mais tous les
champs sont vides. L’internaute doit tout ressaisir. Nous allons améliorer cela grâce aux variables de
session.
1. Dans le fichier script.php, utilisez les sessions pour stocker les valeurs des champs.
2. Dans le fichier index.php, utilisez la session pour afficher les valeurs saisies dans chaque
champ du formulaire en cas d’erreur.
3. Si toutes les données étaient valides et donc que le formulaire a été traité alors il faut effacer
les données de session afin que les champs soient vidés.

V) Compter le nombre de message


Créez une fonction php qui va exécuter la requête SQL pour compter le nombre de message dans la
table php_contacts.
Affichez le résultat de la fonction dans l’entête du formulaire (à la place du XXX)

VI) Améliorer la gestion des erreurs de saisie


Dans le fichier script.php, complétez les contrôles des données :
1. Contrôlez que le nom et le prénom sont des chaînes de texte d’au moins 2 caractères
2. Contrôlez que l’âge est une valeur numérique entière
3. Contrôlez que l’email est bien valide.
4. Nous laisserons le champ message facultatif

Nous allons améliorer la perception des erreurs par l’internaute en créant une bordure rouge si le
champ comporte une erreur ou verte si la donnée est valide. Pour cela il faudra ajouter la classe is-
valid ou is-invalid sur l’élément input valide ou en erreur.

1. Dans le fichier script.php, utilisez la session pour stocker la liste des champs valides et
invalides.
2. Dans le fichier index.php, récupérez ces valeurs et utilisez les pour conditionner la classe is-
valid ou is-invalid sur chaque input

Page 2/3
Université de La Rochelle
Php
VII) Liste des messages
1. Créer un fichier liste.php qui va afficher un tableau avec la liste de tous les messages par
ordre antéchronologique.
2. Chaque message pourra être supprimé en cliquant sur le bouton « suppression »
3. En cliquant sur le bouton « détail » on doit accéder à une page affichant le contenu du
message.

VIII) Pagination
1. Améliorer la présentation en utilisant une pagination pour n’afficher que 10 messages par
page.
2. Ajouter une liste déroulante permettant de choisir le nombre d’éléments à afficher par page :
10, 20, 50, tous
3. Utiliser un cookie pour mémoriser ce choix. Vérifier que le cookie persiste. Le moyen le
plus évident est un redémarrage de votre machine.

Page 3/3

Vous aimerez peut-être aussi