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"

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 ...
    			}
J'arrive maintenant dans ma classe de validation ou je dois prendre chacun des éléménts de ce tableau en compte.
Et c'est là que je me dispute.....

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) ;
			}
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.
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:

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"		????????
					    ) ,
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 !

Qui pourrait me remettre sur le droit chemin, merci à lui....