Bonjour à tous,
pour un formulaire simple j'ai développé une classe de validation PHP comportant plusieurs méthode de test (en privé). Ces méthodes sont exécutées en fonction de l'attribut name du champs du formulaire.
J'ai testé chaque méthode et chacune semble fonctionner.
A chaque fois qu'une erreur est trouvée, elle est placée dans un tableau appelé errorsArray. Si error array est vide, tout est ok le formulaire est validé. dans le cas contraire on affiche les erreurs rencontrées. Rien de nouveau en somme .
J'ai donc créé une méthode displayErrors qui compte le nombre d'entrées dans mon tableau. Si il est vide, la méthode renvoie true, sinon elle affiche les erreurs et renvoie false. Cette méthode est déclenchée par le destructeur.
Le problème: quand le formulaire est validé, rien ne se passe : pas d'erreurs, mais pas de traitement des données non plus...

Voici le code de ma classe :
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
 
class formvalidation {
 
    /*~*~*~*~*~*~*~*~*~*~*/
    /*  1. propriétés    */
    /*~*~*~*~*~*~*~*~*~*~*/
 
    /**
    * @var (array)
    * @desc Messages d'ereurs
    */
	private $errorsArray = array();
	private $isFormValid = false;
	private $alphaNumSpecialpattern = '/^[A-Za-zàäâéèêëïîöôùû0-9\ \-\,_]+$/';
	private $htmlpattern ='/(<[Ii][Mm][Gg]|<\?|<\?php|<[Ss][Cc][Rr][Ii][Pp][Tt]|<[Ii][Nn][Pp][Uu][Tt]|<%|<[Aa]|<[Ff][Oo][Rr][Mm])/';
	private $imagepattern ='#.(\.[Jj][Pp][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Gg]|\.[Jj][Pp][Ee][Gg]|\.[Pp][Nn][Gg])$#';
    /*~*~*~*~*~*~*~*~*~*~*/
    /*  2. méthodes      */
    /*~*~*~*~*~*~*~*~*~*~*/
 
    /**
    * Constructeur
    * 
    * <p>création de l'instance de la classe</p>
    * 
    * @name formvalidation::__construct()
    * @param nom du premier paramètre
    * @param nom du second paramètre
    * @param etc ...
    * @return void 
    */
    public function __construct() {
    	$this->errors=array();
    } 
    /*~*~*~*~*~*~*~*~*~*~*~*~*~*/
    /*  2.1 méthodes privées   */
    /*~*~*~*~*~*~*~*~*~*~*~*~*~*/
	/* 
	*  methode de test --> champ renseigné ou vide
	*  si le champ courrant est vide on remplit le tableau errors
	*/
	private function validateEmpty ($fieldName, $value){
		if(empty($value) || trim($value) == ''|| $value===NULL){
			array_push($this->errorsArray, 'Le champ '.$fieldName.' est obligatoire');
		}
	}
	/*
	*  Méthode de test --> si la valeur (param $field) correspond au motif (param $pattern) (match)
	*  si le champ n'est pas valide on renseigne le tableau erreursArray avec le message d'erreur (param $msg)
	*/
	private function validatePattern($fieldName, $value, $pattern, $msg){
		if(!preg_match($pattern, $value)){
			array_push($this->errorsArray, 'Le champ '.$fieldName.' n\'est pas valide : '.$msg);
		}
	}
	/*
	*  Méthode de test --> si la valeur (param $field) correspond au motif (param $pattern) (match)
	*  si le champ n'est pas valide on renseigne le tableau erreursArray avec le message d'erreur (param $msg)
	*/
	private function validateAlphaNumSpecial($fieldName, $value){
		if(!preg_match($this->alphaNumSpecialpattern, $value)){
			array_push($this->errorsArray, 'Le champ '.$fieldName.' n\'est pas valide ');
		}
	}
	/*
	*  Méthode de test --> si la valeur (param $value) correspond au motif (variable $htmlpattern) (match)
	*  si le champ n'est pas valide on renseigne le tableau erreursArray avec le message d'erreur
	*/
	private function validateHTML($fieldName, $value){
		if(!empty($value) || !trim($value) === ''|| !$value===NULL){
			if(preg_match($this->htmlpattern, $value)){
				array_push($this->errorsArray, 'Le champ '.$fieldName.' n\'est pas valide ');
			}
		}
	}
	/*
	*  Méthode de test --> si la valeur (param $value) correspond au motif (variable $imagepattern) (match)
	*  si le champ n'est pas valide on renseigne le tableau erreursArray avec le message d'erreur
	*/
	private function validateImage($fieldName, $value){
			if(!preg_match($this->imagepattern, $value)){
				array_push($this->errorsArray, 'L\'image '.$fieldName.' n\'est pas valide ');
			}
	}
 
	private function displayErrors(){
		if(count($this->errorsArray)>0){
			echo 'Erreurs : <br />';
			$errorOutput='<ul>';
			foreach($this->errorsArray as $err){
				$errorOutput.='<li>'.$err.'</li>';
			}
			$errorOutput.='</ul><hr />';
			echo $errorOutput;
			return false;
		}else{
			return true;	
		}
	}
    /*~*~*~*~*~*~*~*~*~*~*~*~*~*/
    /*  2.1 méthodes publiques */
    /*~*~*~*~*~*~*~*~*~*~*~*~*~*/
	public function validateform($ar_data){
		foreach($ar_data as $item){
			if(is_array($item)){
				foreach($item as $label=>$val){
					$validation = substr($label,0, strpos($label, '_'));
					$ar_validation =  split('-', $validation);
					foreach ($ar_validation as $id=>$validatorfunc){
						if($validatorfunc){
							call_user_func(array($this,$validatorfunc),$label,$val);
						}
					}
				}
			}
		}
	}
	public function validateUpload($ar_file){
		foreach($ar_file as $ar_name=>$fileItem){
			$validation = substr($ar_name,0,strpos($ar_name, '_'));
			$ar_validation =  split('-', $validation);
			foreach ($ar_validation as $validatorfunc){
				call_user_func(array($this,$validatorfunc),$ar_name,$fileItem['name']);
			}
		}
	}
    /**
    * Destructeur
    */
    public function __destruct() {
		$this->displayErrors();
    }
 }
et voici le code de la page qui utilise la validation :
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
 
if(isset($_POST['submititems'])){
	$imageArray = array();
	$processor = new XMLprocessor();
	$processor->XMLfile = $XMLfile;
	$processor->XMLloader();
	$validator = new formvalidation();
	$hasPOSTerrors = $validator->validateform($_POST);
	$hasFILEerrors = $validator->validateUpload($_FILES);
	if($hasPOSTerrors === true && $hasFILEerrors === true ){
		//traitement du data ici!!!
 
		header('Location : show-list-img.php');
	}else{
		echo 'dkjsdkfjsdlkfj';
	}
}
Merci d'avance pour votre aide