Hey

,
On va faire un p'tit cours rapidement.
Quand on déclare une variable en PHP, on a deux façons de le faire : sans valeur par défaut, avec une valeur par défaut. Ainsi :
// Sans valeur par défaut.
$foo;
// Avec valeur par défaut
$bar = 'dummy value';
Observons le comportement de ces variables :
var_dump($foo, $bar);
// On aura :
// NULL
// string(…) "dummy value"
On observe qu'une variable non initialisée à une valeur nulle.
Maintenant, on effectue la même chose avec un tableau :
// On déclare un tableau.
$array = array(
'foo' => 'bar',
'dummy' => 'value'
);
Si on veut accéder à une entrée de ce tableau, on procède de cette façon :
var_dump($array['foo']);
// Affichera :
// string(…) "bar"
Bien, mais si on souhaite accéder à une entrée qui n'existe pas ? Si on fait :
var_dump($array['answerToLife']);
? Hum, qu'est-ce qu'il se passe ? Bah PHP nous dit que l'index (ici,
answerToLife) n'existe pas. Et oui, on ne l'a pas déclaré dans le tableau
$array.
Pour le tableau
$_GET c'est pareil. Il s'auto-remplit avec les valeurs passées en URL (sous la forme de paires
key=value). Donc si la paire
module=1 n'existe pas en URL, elle n'existera pas dans le tableau
$_GET.
Pour éviter des erreurs, on utilise la fonction
isset qui est une « fonction » native du système, comme
echo,
if,
while,
include etc. En fait, c'est un mot-clé reconnu par l'analyseur syntaxique, mais bref, passons. Ça se comporte comme une fonction.
Cette fonction sert à savoir si la variable est définie (
is set en anglais). On l'utilise de cette manière :
// On déclare nos variables.
$foo;
$bar = 'dummy value';
// Et on vérifie si elles sont définies ou pas.
var_dump(isset($foo), isset($bar), isset($answerToLife));
// Affichera :
// bool(FALSE)
// bool(TRUE)
// bool(FALSE)
On remarquera que PHP ne fait pas la différence entre une variable non définie (
$foo) et une variable inexistante (
$answerToLife).
Et il en est de même pour un tableau :
// On déclare un tableau.
$array = array(
'foo' => 'bar'
);
// On vérifie l'existence de deux entrées.
var_dump(
isset($array['foo']),
isset($array['toto'])
);
// Affichera :
// bool(TRUE)
// bool(FALSE)
Donc si on veut tester l'existence d'une entrée d'un tableau
$_GET, il faut s'y prendre de cette façon :
// On vérifie l'existence de nos entrées avant de travailler avec.
if(isset($_GET['foobar'])) {
// On effectue des traitements.
}
Ou sinon, pour simplifier le traitement des valeurs, on peut assigner une valeur par défaut :
// On met une valeur par défaut pour avoir un unique traitement.
if(!isset($_GET['foobar']))
$_GET['foobar'] = 'dummy-value';
// On effectue des traitements sans se soucier de quoi que ce soit.
Utilisez
isset est plus rapide que
is_null de part le fait que ce n'est pas une fonction, mais un « mot-clé » du langage (comme
if etc., voir plus haut dans mon message) ; alors que
is_null est une fonction de PHP, qui va vérifier le type. C'est plus long car ça fait appelle à plus de données (si vous voulez que j'explique le typage faible et dynamique de PHP, ce sera avec plaisir, mais dans un autre sujet

).
Si PHP te sort une erreur, c'est qu'il y a une erreur. Même une bête
notice doit être résolue !
Le code qu'on t'a fourni a été écrit avec les pieds. Ils ont compliqué les choses et ajouter des erreurs possibles. Autant dire que c'est totalement inutile.
Tu connais maintenant la bonne façon de procéder. À toi de te débrouiller

.