Function php et array qui reste vide
Bonjour,
Avant de commencer je tiens déjà à remercier ceux qui prendrons le temps de lire mon post.
Je crée un formulaire HTML et j'aimerai effectuer plusieurs contrôle afin d'être certain que les champs nécessaire soient remplis.
J'ai donc pour cela une page membre.php et une page fonctions.php
Voici la fonction que j'utilise afin de vérifier que les champs nécessaire soient remplis. Par le même occasions je remplis mon array $error avec les champs non remplis par l'utilisateur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
function VerificationChamps($champs_non_verifie) {
$array_champs_non_verifie = explode(',', $champs_non_verifie);
foreach($_POST as $cle => $element) {
if(!in_array($cle,$array_champs_non_verifie)) {
if(empty($element)) $error[] = $cle.' est non renseigné';
}
}
if(empty($error)) {
return TRUE;
}
else {
return FALSE;
}
} |
Dans ma page membre.php j'ai le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
$champs_non_verifie = ('lastname,city');
$array_champs_non_verifie = explode(',', $champs_non_verifie);
$error = array();
if(VerificationChamps($champs_non_verifie)==TRUE) {
// Continuer d'autre contrôle
}
else {
// print_r($error);
} |
Mon gros problème est que le TRUE ou FALSE passe comme il faut mais que mon Array $error reste vide!
Quand je ne passe pas par une fonction, j'arrive à obtenir le résultat de l'array $erreur...
Auriez-vous une idée, solution?
Merci d'avance et bonne journée,
Christophe
Merci pour votre réponse rapide
Citation:
Envoyé par
julp
Une fonction, n'a, par défaut, pas accès aux variables externes. Il faut donc fournir $error en paramètre (paramètre sous forme de référence s'il est modifié - (in)out) ou la déclarer global en début de fonction ou y faire référence via $GLOBALS['error'].
Mais ici autant retourner directement le tableau $error (interne à la fonction), ça faciliterait les choses et on peut ensuite tester s'il est vide ou non directement.
Plus d'informations dans la documentation :
Portée des variables.
Je suis débutant et je viens de lire l'info que vous m'avez donnée, je dois dire que cela m'a beaucoup aidé!
Je viens d'ajouter la ligne suivante à mon code et cela marche à merveille!
Code:
1 2 3
| function VerificationChamps($champs_non_verifie) {
global $error;
$error = array(); |
Encore un grand merci pour votre aide précieuse et super rapide.
Christophe