Décidément, je ne suis pas copain (encore) avec les tableaux associatifs....
Il y a peut être un doc sur le site mais si j'en ai trouvés et déchargés bcp, celui-là, je le cherche toujours et comme il n'y a pas de moteur de recherche [Tiens une bonne suggestion....Ha quelle est bonne celle-là !]
Je souhaite me faire une routine de validation de champs de formulaire - en même temps j'apprends un peu + PHP......
Au départ dans la forme HTML il y a un peu de PHP avec le définition des champs et de leurs validations ainsi que le catch de l'évent "Submit"
J'arrive maintenant dans ma classe de validation ou je dois prendre chacun des éléménts de ce tableau en compte.
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 $fields = array ( "prenom" , array(MUST , 3, 30, A, "Prénom incorrect" ) , 'nom' , array(MUST , 3, 30, A, "Nom incorrect" ) , "email" , array(MUST , 5, 25, EMAIL, "Email incorrect [www.]xxx@zzz.ext" ) , "phone" , array(MUST , 10, 10, PHONE, "N° téléphone incorrect, 10 posistions" ) , "pass" , array(MUST , 6, 8, PASW, "Le mot de passe est composé de 6 à 8 caractères Anum" ) , "cpass" , array(MUST , 6, 8, PASW, "Le mot de passe est composé de 6 à 8 caractères Anum" ) , "text" , array(MUST , 20,500, ANUM, "Le test est Anumérique + ponctualtion" ) ) ; if (isset($_POST['chkform'])) { $cf = new checkform($fields); if ($cf->FormValid()) { # Formulaire valide # Instruction ... }
Et c'est là que je me dispute.....
Et principalement dans la méthode Validate ou je souhaiterais mettre dans le tableau "field_name" tous les éléments pour chaque champ afin de dispatcher + tard vers des validations ponctuelles où là, je pense pouvoir m'en sortir.
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 <?php define("MUST" , "must" ) ; define("must" , "must" ) ; define("OPT" , "opt" ) ; define("opt" , "opt" ) ; define("ALPHA" , "alpha") ; define("alpha" , "alpha") ; define("ANUM" , "anum" ) ; define("anum" , "anum" ) ; define("ANUM€" , "anum€") ; define("anum€" , "anum€") ; define("A€" , "a€" ) ; define("a€" , "a€" ) ; define("NUM" , "num" ) ; define("num" , "num" ) ; define("EMAIL" , "email") ; define("email" , "email") ; define("PHONE" , "phone") ; define("phone" , "phone") ; define("PASW" , "pasw" ) ; define("Ppas" , "pasw" ) ; define("MINL" , "minl" ) ; define("minl" , "minl" ) ; define("MAXL" , "maxl" ) ; define("maxl" , "minl" ) ; define("FLDT" , "type" ) ; define("fldt" , "type" ) ; define("MESG" , "mesg" ) ; define("mesg" , "mesg" ) ; class checkform { private $form, $countfields, $valid ; private $field_name ; function __construct($form) { $this->form = $form ; $this->valid = false ; $this->validate() ; } function __destruct() {} function validate() { foreach ($this->form as $v1) { $this->field_name[] = $v1 ; foreach ($v1 as $v2) { $this->field_name[][MUST] = $v2 ; $this->field_name[][MINL] = $v2 ; $this->field_name[][MAXL] = $v2 ; $this->field_name[][FLDT] = $v2 ; $this->field_name[][MESG] = $v2 ; echo "<br/>n"; } } print_r($this->field_name) ; }
Mais ici, j'imprime mes variables de contrôle et j'ai 2 écrans qui ne ressemblent à rien !
Pour info complémentaire, si j'ai choisi un tableau à 2 dimensions, c'est parce que pour un même champ je pourrais avoir dans la 2ième dimensions, toutes les validations à effectuer avec des msgs d'erreur différents, comme ceci:
Je penche + pour cette option, mais je ne suis pas obligé de transformer le tableau, peut simplement me mouvoir à l'intérieur et balayer le tout serait déjà bcp !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $fields = array ( "prenom" , array( MUST , "le champ est obligatoire', MINL , 3,"la long minimale est de X" , MAXL , 30, etc..... TYPE , A, etc...... "Prénom incorrect" ???????? ) ,
Qui pourrait me remettre sur le droit chemin, merci à lui....![]()
Partager