Coucou a tous,
Tout est dans le titre je m'explique :
Etant en première année en PHP, Je voudrais si l'utilisateur met des erreurs dans le formulaire après qu'il l'ait envoyé, qu'on recharge la page du formulaire avec les infos que l'utilisateur a déjà rentré (ce que j'ai pas encore fait) mais les erreurs qu'il a fait au dessus genre ce type d'erreur : le mail n'est pas valide,...
Ce qui me pose le plus de soucis c'est quand j'envoi le formulaire,la redirection se dirige quand même vers la page de "résultat" et non la page du formulaire avec les erreurs quand je reviens dans la page précédente au contraire la ca me met le formulaire avec les erreurs mais je voudrais que ça soit fait automatiquement et pas que j'ai a faire page précédente comme ça avant d'envoyer "définitivement" le formulaire l'utilisateur rentre correctement tous les champs et la il appuie sur le bouton envoyé et ça s'envoi .
Car je comprend pas très bien je redirige pourtant vers page5.php la où se trouve mon formulaire .
J'ai également un petit soucis quand je recharge la page de résultat a partir de la barre d'adresse ca me met une erreur avec un stack similaire a ceci. (REGARDER LA MISE A JOUR en dessous)
Voici mes deux codes :
Page5.php
Et voici mon code concernant le traitement et la récupération des données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 <?php echo" <div class=\"container\"> <div class=\"starter-template\"> "; ?> <?php if(array_key_exists('errors',$_SESSION)) : ?> <div class="alert alert-danger"> <?= implode('<br>', $_SESSION['errors']) ?> </div> <?php unset($_SESSION['errors']); endif; ?> <?php echo" <form method=\"POST\" action=\"post_contact.php\"> <div class=\"row\"> <div class=\"col-md-6\"> <div class=\"form-group\"> <label for=\"Nom\">* Votre nom :</label> <input type=\"text\" placeholder='Nom,prénom' name=\"Nom\" id=\"Nom\" class=\"form-control\" required/> </div> </div> <div class=\"col-md-6\"> <div class=\"form-group\"> <label for=\"Email\">* Votre email :</label> <br/> <input type=\"text\" placeholder='Votre mail ici' name=\"Email\" id=\"Email\" class=\"form-control\"required/> <br /> </div> </div> <div class=\"col-md-6\"> <div class=\"form-group\"> <label for=\"Jesuis1\">Je suis :</label> <br/> <select name=\"Jesuis2\"> <option value=\"Part.\">Particulier</option> <option value=\"Prof.\">Professionnel</option> </select> <br/> </div> </div> <div class=\"col-md-6\"> <div class=\"form-group\"> <label for=\"message\">Votre Message :</label> <br/> <textarea id=\"Message\" name =\"Message\"placeholder='Votre message ici'></textarea> <br/> </div> </div> <div class=\"col-md-6\"> <div class=\"form-group\"> <input type=\"checkbox\" id=\"Newsletter\" name=\"Newsletter\" value=\"1\"> <label for=\"Newsletter\">Souhaitez-vous vous abonner à la newsletter ?</label> </div> </div> <button type =\"submit\" class=\"btn btn-primary\">Envoyer</button> </div> </form> "; ?> <h2>Debug : </h2> <?=var_dump($_SESSION); ?> <?php echo" </div> </div> "; ?> <?php
post_contact.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 <?php /** * Created by PhpStorm. * User: theba * Date: 24/01/18 * Time: 18:43 */ $errors = []; /* Ce qui a été fait avant * ------------------------------- * if (filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL)) { echo ""; } else { $errors['Email'] ='Cet email a un format non adapte.(mettez un arobase et un point)'; } if(!array_key_exists('Email',$_POST)|| $_POST['Email'] == '') { $errors['Email']="Vous n'avez pas renseigne votre Email"; } */ // Si la personne veut recharger la page post_contact sans passer par le formulaire il aura ces erreurs : Mise a jour if(!array_key_exists('Email',$_POST)|| $_POST['Email'] == '' || !filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL)) { $errors['Email']= "Vous n'avez pas renseigne votre Email ou cet email a un format non adapte.(mettez un arobase et un point)"; } if(!array_key_exists('Nom',$_POST)|| $_POST['Nom'] == '') { $errors['Nom']= "Vous n'avez pas renseigne votre Nom"; } if(!array_key_exists('Message',$_POST)|| $_POST['Message'] == '') { $errors['Message']= "Vous n'avez pas renseigne votre Message"; } // Si il n'y a pas d'erreurs alors on affiche si pas on réaffiche la page du formulaire if(!empty($errors)) { session_start(); $_SESSION['errors'] = $errors; $_SESSION['inputs'] = $_POST; header('Location : page5.php'); } else { $nom=$_POST['Nom']; $email=$_POST['Email']; $jesuis=$_POST['Jesuis2']; $message=$_POST['Message']; if (isset($_POST['Newsletter'])) { $newsletter = 'Oui'; } else { $newsletter = 'Non'; } echo "Votre nom : "; echo $nom; echo "<br/>"; echo "Votre email : "; echo $email; echo "<br/>"; echo "Vous etes : "; echo $jesuis; echo "<br/>"; echo "Votre message : "; echo $message; echo "<br/>"; echo "Newsletter : "; echo $newsletter; } var_dump($errors) ?>
Merci a vous tous de votre aide et désolé ma question si sa se trouve est bête a crever
Mais ca fait un moment que je cherche après cette erreur
PS : Attention seul les champs nom et email sont obligatoire.
----------------
Mise a jour : après quelques recherche j'ai changé le début du post_contact.php et donc il me met plus d'erreur concernant le mail mais la redirection au niveau du formulaire me pose toujours problème... j'ai modifié le code dans l'exercice et mis se que j'ai mis avant en commentaire
Partager