Renvoi messages d'erreur de formulaire
Résolu
cs_JPhL
Messages postés
99
Date d'inscription
Statut
Membre
Dernière intervention
-
cs_JPhL Messages postés 99 Date d'inscription Statut Membre Dernière intervention -
cs_JPhL Messages postés 99 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous
Je suis les cours de php donnés sur ce site. Et en parallèle, je crée un site pour un ami. Je lui ai fait une page "contact.php" avec formulaire et un page de réponse "contact_reponse.php"
Bon, le formulaire ne sera pas le formulaire définitif, car j'y ai faut dessus des tas d'essais... Faut bien apprendre ! En plus, l'objectif est de tout mettre sur la même page. Mais ça viendra après ! Chaque chose en son temps ! ;0)
Voici ma page contact.php
Je voudrais que, quand un champ est mal rempli ou pas rempli, cliquer sur "Envoyer votre message" face apparaître un des messages d'erreur de la page "contact_reponse.php" juste au dessus du formulaire de la page "contact.php".
J'y suis arrivé sur une exemple simple des cours de Openclassrooms, mais là...
Alors, si vous pouviez m'aider, tout en me permettant de comprendre ce que je fais, ce serait super.
Merci d'avance. Bien cordialement.
JP
Je suis les cours de php donnés sur ce site. Et en parallèle, je crée un site pour un ami. Je lui ai fait une page "contact.php" avec formulaire et un page de réponse "contact_reponse.php"
Bon, le formulaire ne sera pas le formulaire définitif, car j'y ai faut dessus des tas d'essais... Faut bien apprendre ! En plus, l'objectif est de tout mettre sur la même page. Mais ça viendra après ! Chaque chose en son temps ! ;0)
Voici ma page contact.php
<?php use utils\Path; include ( dirname ( __DIR__ ) . "/include/init.php" ); ?> <!doctype html> <html lang="fr"> <head title="endotapping"> <?php include ( utils\Path::head () ) ?> <title>Endotapping - contact</title> </head> <?php include ( utils\Path::navbar () ) ?> <div id="contenu" class="contenu texte"> <h1>Contactez-nous.</h1> <hr class="separator_bar"> <div id="contenu" class="texte"> <div class="centre"> <p class="centre"><img src="<?= Path::images ( "contact/contact.jpg" ) ?>" width="450" height="312" alt="contact"></p> <p> Vous pouvez nous contacter par e-mail, en cliquant sur <a href="mailto:contact@endotapping.fr">contact@endotapping.fr</a> <br/>où directement par l'intermédiaire du formulaire ci-dessous : </p> <p> </p> </div> <form method="POST" action="<?= utils\Path::views ('contact_reponse') ?>"> <fieldset> <legend>Vos coordonnées :</legend> <p class="centre"> <label for="nom">Nom : </label><input type="text" name="nom" id="nom" placeholder="Votre Nom" size="30" autofocus > <label for="prenom">Pérnom : </label><input type="text" name="prenom" id="prenom" placeholder="Votre Prénom" size="40"> </p> <p class="centre"> <label for="numero">N° : </label><input type="text" name="numero" id="numero" placeholder="Numero" size="5"> <label for="rue">Rue : </label><input type="text" name="rue" id="rue" placeholder="Nom de votre rue" size="60"> </p> <p class="centre"> <label for="code_postal">Code postal : </label><input type="text" name="code postal" id="code_postal" placeholder="Code Postal" size="30"> <label for="ville">Ville : </label><input type="text" name="ville" id="ville" placeholder="Ville" size="50"> </p> <p class="centre"> <label for="email">Email : </label><input type="email" name="email" id="email" placeholder="Adresse mail" size="100"> </p> </fieldset> <fieldset> <legend>Rédiger votre message : </legend> <p class="centre"> <label for="message"></label><textarea name="message" id="message" placeholder="Rédigez votre message" rows="10" cols="100"></textarea> </p> </fieldset> <p class="centre"><input type="submit" value="Envoyer votre message"><input type="reset" name="Effacer_saisie" value="Effacer le formulaire"></p> </form> </div> <hr class="separator_bar"> </div> <?php include ( utils\Path::footer () ) ?> <?php include ( utils\Path::commun_script () ) ?> et le début de ma pager de vérification "contact_reponse.php" <?php use utils\Path; include ( dirname ( __DIR__ ) . "/include/init.php" ); $errors = ""; if (!empty( $_POST )) { if (!isset( $_POST['prenom'] ) || preg_match ( '#^[a-zA-Z\s-]{2,}#', $_POST['prenom'] ) == 0) { $errors = "Votre prénom est incorrect."; } if ($errors == "" && ( !isset( $_POST['nom'] ) || preg_match ( '#^[a-zA-Z\s-]{2,}#', $_POST['nom'] ) == 0 )) { $errors = "Votre nom est incorrect."; } if ($errors == "" && ( !isset( $_POST['numero'] ) || preg_match ( '#^[0-9]+\s?[a-zA-Z]{1,3}?$#', $_POST['numero'] ) == 0 )) { $errors = "Votre numéro de rue est incorrect."; } if (( $errors == "" ) && ( !isset( $_POST['rue'] ) || preg_match ( '#^[0-9a-zA-Z\'\s-]+#', $_POST['rue'] ) == 0 )) { $errors = "Votre nom de votre rue est incorrect."; } if ($errors == "" && ( !isset( $_POST['code_postal'] ) || preg_match ( '#^[0-9]{5}$#', $_POST['code_postal'] ) == 0 )) { $errors = "Votre code postal est incorrect."; } if ($errors == "" && ( !isset( $_POST['ville'] ) || preg_match ( '#^[a-zA-Z\'\s-]+#', $_POST['ville'] ) == 0 )) { $errors = "Votre nom de ville est incorrect."; } if ($errors == "" && ( !isset( $_POST['email'] ) || preg_match ( '#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#', $_POST['email'] ) == 0 )) { $errors = "Votre adresse mail est incorrect."; } if ($errors == "" && ( !isset( $_POST['message'] ) || empty( $_POST['message'] ) )) { $errors = "Merci de rédiger correctement votre message."; } if ($errors == "") { $retour = mail ( 'contact@endotapping.fr', 'Envoi depuis le site Endotapping.fr', $_POST['message'], 'From : contact@endotapping.fr' ); } } ?>
Je voudrais que, quand un champ est mal rempli ou pas rempli, cliquer sur "Envoyer votre message" face apparaître un des messages d'erreur de la page "contact_reponse.php" juste au dessus du formulaire de la page "contact.php".
J'y suis arrivé sur une exemple simple des cours de Openclassrooms, mais là...
Alors, si vous pouviez m'aider, tout en me permettant de comprendre ce que je fais, ce serait super.
Merci d'avance. Bien cordialement.
JP
A voir également:
- Renvoi messages d'erreur de formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Comment savoir si quelqu'un lit mes messages sur whatsapp - Accueil - Messagerie instantanée
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Formulaire de reclamation instagram - Guide
2 réponses
Bonjour,
Tu peux déjà faire une première vérification de tes champs via du Javascript.
Cela permettra de bloquer l'envoi tant que les champs ne correspondent pas à ce que tu souhaites.
Bien entendu, pour plus de précautions, tu feras également une vérification côté PHP dans le script qui récupère les données envoyées par le formulaire.
Voici un peu de lecture sur le sujet :
https://developer.mozilla.org/fr/docs/Web/Guide/HTML/Formulaires/Validation_donnees_formulaire
et un Script JS qui pourra t'aider :
https://validatejs.org/
NB: Comme tu le voix... le seul langage PHP ne suffit pas pour faire un site web.
Il faut également connaitre (maitriser...) le html, le css, le Javascript et, si il y a une base de données, le SQL.
Tu peux déjà faire une première vérification de tes champs via du Javascript.
Cela permettra de bloquer l'envoi tant que les champs ne correspondent pas à ce que tu souhaites.
Bien entendu, pour plus de précautions, tu feras également une vérification côté PHP dans le script qui récupère les données envoyées par le formulaire.
Voici un peu de lecture sur le sujet :
https://developer.mozilla.org/fr/docs/Web/Guide/HTML/Formulaires/Validation_donnees_formulaire
et un Script JS qui pourra t'aider :
https://validatejs.org/
NB: Comme tu le voix... le seul langage PHP ne suffit pas pour faire un site web.
Il faut également connaitre (maitriser...) le html, le css, le Javascript et, si il y a une base de données, le SQL.
Merci pur ta réponse. J'ai essayé de modifier mon message qui n'était pas clair en séparant les codes des deux pages, mais ça n'a pas voulu fonctionner.
La solution simple que j'ai trouvée, après avoir pas mal tâtonné, j'ai mis
dans la page contact.php au dessus du formulaire, et
dans la page contact_reponse.php juste au dessus e header('Location'... Au démarrage, je l'avais placé au début de ma page. De ce fait, $errors était vide !
Encore merci pour ta réponse ;
Bien cordialement ;
JP
La solution simple que j'ai trouvée, après avoir pas mal tâtonné, j'ai mis
<?php echo $_SESSION['$errors']; ?>
dans la page contact.php au dessus du formulaire, et
$_SESSION['$errors'] = $errors;
dans la page contact_reponse.php juste au dessus e header('Location'... Au démarrage, je l'avais placé au début de ma page. De ce fait, $errors était vide !
Encore merci pour ta réponse ;
Bien cordialement ;
JP