Array fonction et variables

Eléphanteau du PHP | 43 Messages

05 janv. 2007, 21:05

Bonsoir,

Dans ma page principale j'appelle avec un include une page de validation
  include ("include/valid_formulaire.php5");
Je défini dans ma page principale uen variable gloable et je l'initialise en tant que tableau
global $error;
$error=array();
Un peu plus tard dans le code je fais appel à une fonction contenue dans ma page de validation incluse précédement afin de vérifier la valeur saisie
   function valid_nom($nom,$type){
        if(empty($nom)|| trim($nom)==''){
    		array_push($error,"Attention, le '.$type. ' doit être saisi");
    	}
 }
Cette fonction doit vérifier si la variable nom a bien été saisie dans le cas contraire doit stocker dans le tableau précédement défini un message d'erreur.

et là, ça marche pas j'ai ce message d'erreur :
First argument should be an array

Avez vous une idée ? dois je définir mon tableau autrement afin qu'il soit accessible par ma fonction ?
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Mammouth du PHP | 19672 Messages

05 janv. 2007, 21:39

Non, tu fais appel à l'intérieur de ta fonction à une variable extérieure : pour ue ça fonctionne, il faut a déclarer globale :
function valid_nom($nom,$type)
{
    global $error;
    if(empty($nom)|| trim($nom)=='')
    {
        array_push($error, "Attention, le ". $type ." doit être saisi");
    }
} 
Et je te signale au passage que faire une concaténation dans une chaine encadrée de guillemets doit se faire également avec des guillemets : donc :
"...le ". $type ." doit..."
et non
"...le '. $type .' doit..."

Enfin, on peut quand même simplifier un peu ta fonction :
function valid_nom($nom,$type)
{
    global $error;
    if(empty(trim($nom)))
    {
        $error[] = "Attention, le ". $type ." doit être saisi";
    }
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 43 Messages

06 janv. 2007, 09:49

Merci pour tous ces conseils, je m'en vais de ce pas tester tout cela
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]