real_mathos | Salut,
j'ai un problème avec une de mes fonctions. Elle permet de vérifier les valeurs d'un formulaire en fonction de leur type. Je gère le fait qu'un type d'erreur ne doit aparaîtr qu'une seule fois par un tableau $erreur['type_erreur'] dont la case correspondant au type de l'erreur détectée est positionnée à true dès qu'une de ces erreurs apparaît. Ca fonctionne si un seul type d'erreur, mais dès qu'un deuxième type d'erreur apparaît, j'ai une erreur de php "Cannot use a scalar value as an array". Voilà le code:
Code :
- function valider_var($chaine, $type, $erreur=array())
- {
- if ($erreur==array())
- $erreur = array('texte' => false, 'nom' => false, 'nombre' => false, 'url' => false, 'date' => false);
- debug($erreur);
- if (($type==FTEXTE) && (!preg_match("/[-a-zA-Z_0-9\.]*/", $chaine)))
- {
- if (!$erreur['texte'])
- {
- passer_message_info("Attention: les textes ne doivent contenir que des lettres, chiffres ou les caractères spéciaux suivants: '.', '-', '_'.", INFO);
- $erreur['texte'] = true;
- return false;
- }
- }
- if (($type==FNOM) && (!preg_match("/[a-zA-Z]+[-a-zA-Z_0-9\.]*[a-zA-Z0-9]+/", $chaine)))
- {
- if (!$erreur['nom'])
- {
- passer_message_info("Attention: les noms doivent commencer obligatoirement par une lettre, terminer par une lettre ou un chiffre, et ne contenir que des lettres, chiffres ou les caractères spéciaux suivants: '.', '-', '_'.", INFO);
- $erreur['nom'] = true;
- return false;
- }
- }
- elseif (($type==FNOMBRE) && !is_numeric($chaine))
- {
- if (!$erreur['nombre'])
- {
- passer_message_info("Attention: les id et les années ne doivent être composés que de chiffres.", INFO);
- $erreur['nombre'] = true;
- return false;
- }
- }
- elseif (($type==FURL) && (!preg_match('#^(http://)([-a-z0-9\._])+\.[a-z]{2,6}(/[-a-z0-9\._]*)*#i', $chaine)))
- {
- if (!$erreur['url'])
- {
- passer_message_info("Attention: les adresses http doivent être de la forme: http://url.ext .", INFO);
- $erreur['url'] = true;
- return false;
- }
- }
- elseif (($type==FDATE) && (!preg_match('.^([0-2][0-9]|3[0-1])[/-](0[1-9]|1[0-2])[/-][1-2]([0-9]){3}$.', $chaine)))
- {
- if (!$erreur['date'])
- {
- passer_message_info("Attention: les dates doivent être entrées au format jj/mm/aaaa ou jj-mm-aaaa.", INFO);
- $erreur['date'] = true;
- return false;
- }
- }
- return true;
- }
|
J'appelle la fonction comme ceci:
Code :
- foreach ($var_formulaire as $nom_champs)
- {
- if ($valeurs_champs[$i] = traiter_var($_POST[$nom_champs], 0, true))
- {
- if (!valider_var($valeurs_champs[$i], $types_formulaire[$i], $erreur))
- $erreur=true;
- }
- $i++;
- }
|
Est-ce que quelqu'un aurait une idée de comment résoudre ce problème?
Merci d'avance!
|