Bonjour à tous,
Bien qu'étant une fervente lectrice du site (merci d'ailleurs à tous les contributeurs pour leurs tutos clairs et sympathiques), je poste ici pour la première fois.
Si je fais appel à vous aujourd'hui c'est que je me retrouve confrontée à un soucis depuis plusieurs jours. Je bosse actuellement sur l'élaboration d'un formulaire en php.
Celui-ci est composé de 2 choses:
- la classe qui permet le traitement du formulaire + le script qui exécute les instructions
- le formulaire en html.
Le principe est simple (le code qui suit est normalement assez commenté et explicite pour être facilement compréhensible): l'utilisateur vient sur la page du formulaire et remplit les champs. Au clic sur "submit" ou s'il tape "entrée", le script vérifie la validité des champs (s'ils sont vides, s'ils correspondent au pattern passé en paramètre etc...) Lorsque tout est ok, le script envoie un mail avec le contenu du formulaire et affiche un message pour remercier l'utilisateur.
Le problème: le script reste bloqué toujours au même endroit, c'est-à-dire avant la vérification du contenu des champs de formulaire. J'ai une variable $action, dans ma classe, qui permet de déterminer l'état du formulaire (1= jamais exécute, 2=validation des données entrées, 3= envoi du mail). Seulement, il reste bloqué, comme si $action ne changeait jamais d'état. Or lorsque que je fais un "echo Email->__getAction();", il me dit bien que $action=2.
Ci-après le code, de manière à être plus explicite. J'espère que vous aurez compris mon problème, sinon je ré-expliquerais ^_^°
Merci par avance à ceux qui auront la gentillesse de me venir en aide.
Bonne journée à tous!!
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 <?php class SendMail { // propri�tés privées : tous les éléments et attributs utilisables (certaines valeurs sont entrées par défaut) //variable de ma classe[...] var $action; //variable permettant de tester si le formulaire vient juste d'�tre cr�er //Constructeur public function SendMail ($type = "texte") { $this->action=1; if ($type == "texte") { $this->entete = "Content-type: text/plain; charset=iso-8859-1n"; } elseif ($type == "html") { $this->entete = "Content-type: text/html; charset=iso-8859-1n"; } } public function __GetAction() { return $this->action; } public function __SetAction($new_Action) { $this->action=$new_Action; } //instructions de ma classe [...] }//fin de la classe SendMail //Création d'un nouvel objet SendMail $destinataire="test@test.com"; //on configure l'adresse destinataire $objet="Test mail site"; $contenu=""; $Email=new SendMail("HTML"); echo '<p>test cas 1</p>'; switch($Email->__GetAction()) { case 1: //on met tous les champs à vide s'ils sont nulls $nom = isset($_POST['nom']) ? $_POST['nom'] : ''; //etc...[...] break; case 2: //Récupération des variables du formulaire $valid=0; //variable servant à déterminer si $action change d'état ou non //on vérifie que les entrées obligatoires ne soient pas vides //on vérifie, si elles sont remplies, qu'elles correspondent //au pattern passé en paramètre if($Email->TestEmpty($nom)) { echo '<p>Le champ "Nom" est vide</p>'; $valid++; } else { if($Email->TestEntry($Email->patternstring, $nom)==0) { echo '<p>Le champ "Nom" n\'a pas un format valide</p>'; $valid++; } }; //idem pour les autres champs [...] if($valid==0) { $Email->__SetAction(3); //les entrées sont valides, on passe à l'envoi de mail } break; case 3: //Envoi du mail car toutes les données sont valides //[...] break; } $Email->ActionSubmit(); echo '<p>'.$Email->__GetAction().'</p>'; ?> <div ID="Body"> <H2>Nous contacter</H2> <form method="POST" action="?" enctype=multipart/form-data> <fieldset> <legend>Vos coordonnées</legend> <label class="label_Coord" for="nom">Nom </label><input type="text" name="nom" id="nom" value="<?php echo htmlentities($nom); ?>"/><p class="p_asterisk">*</p><br/> <!-- Je n'ai mis qu'un champs, mais la syntaxe est la même pour les autres --> <p class="p_com">Veuillez remplir les champs suivit d'un <strong>*</strong></p> <input type="submit" value="Envoyer"/> </form> </div>
Partager