Message d'erreur PHP

massrt
Invité n'ayant pas de compte PHPfrance

21 mai 2012, 10:37

Bonjour a tous!

Je voudrais comprendre comment faire pour faire disparaitre le message d'erreur dans mon code ci-dessous. lorsque j'execute la page,on m'affiche un message d'erreur.
Message d'erreur: Notice: Undefined index: var in c:\easyphp\www\site\variable.inc.php on line 2
NB: Je suis débutant donc soyez indulgent SVP!

[php]<?php
$var=$_GET['var'];
switch ($var) {
case "historique" :
$page="historique.inc.php";
break;

case "mission" :
$page="mission.inc.php";
break;

case "mot" :
$page="lemot.inc.php";
break;

case "organe" :
$page="organe.inc.php";
break;

case "attribution" :
$page="attribution.inc.php";
break;

case "structures" :
$page="structures.inc.php";
break;

case "cooperation" :
$page="cooperation.inc.php";
break;

case "admission" :
$page="admission.inc.php";
break;

case "admission2" :
$page="admission2.inc.php";
break;

case "direct" :
$page="direct.inc.php";
break;

case "prof" :
$page="prof.inc.php";
break;

case "etranger" :
$page="etranger.inc.php";
break;

case "resultat" :
$page="resultat.inc.php";
break;

case "inscription" :
$page="inscription.inc.php";
break;

case "f_initiale" :
$page="f_initiale.inc.php";
break;

case "f_continue" :
$page="f_continue.inc.php";
break;

case "contacts" :
$page="contacts.inc.php";
break;

case "ecrire" :
$page="ecrire.inc.php";
break;

case "actualite" :
$page="actualite.inc.php";
break;
default :
$page="accueil.inc.php";

} ?>[/php]

ViPHP
ViPHP | 2577 Messages

21 mai 2012, 10:52

Cela signifie que l'index 'var' n'est pas défini dans $_GET.
Tu peux ajouter var_dump($_GET); en debut de script pour voir ce que contient $_GET.
Pour ne pas voir l'erreur, il faut tester l'existence de la variable :
<?PHP
if (isset($_GET['var'])
{
  $var = $_GET['var'];
}
else
{
  $var = ''; // A toi de déterminer cette valeur, la ca doit aller sur l'accueil.
}
?>

Mammouth du PHP | 1967 Messages

21 mai 2012, 11:01

Ton message d'erreur t'indique que l'index 'var' n'existe pas à la ligne 2.
Sur cette ligne, on voit que tu assigne à la variable $var la valeur du tableaux _GET à l'index var. Seulement, si tu accède à ta page sans spécifier de valeur dans ce tableaux (sans une fin d'url du type ?var=valeur) celui ci est vide.

Le mieux pour éviter ce type d'erreur, est de systèmatiquement tester la présence d'une valeur ou mieux encore tester la présence de l'index dans ton tableaux. tu peux faire cela avec une condition qui teste avec la fonction isset(). Après tu as le choix entre définir une valeur par défaut ou passer à la suite du code.

Pour une valeur par défaut, tu peux assigner ta variable de cette façon :
$var = (isset($_GET['var'])) ? $_GET['var'] : 'home';
//cette ligne est équivalente aux lignes suivantes
if (isset($_GET['var'])) {
$var = $_GET['var'];
} else {
$var = 'home';
}
La valeur que tu donne par défaut importe peu dans ce cas ci, pour autant que ce ne soit pas une valeur d'un case, tu ira vers ta page acceuil

Si le code qui suit ne dois pas être éxécuté si tu n'a pas de valeur, tu dois mettre tout la suite de ton code dans une condition if (probablement pas le cas ici mais c'est pour être le plus complet possible)
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube