Pb variable PHP undefined

Fermé
Vixg@ge - 12 mai 2004 à 10:02
 Vixage - 12 mai 2004 à 11:14
Bonjour,

Lors de l'executino du code ci-dessou j'ai une erreur : Notice Undefined index menu ds la dernière ligne

Poruquoi?

Merci pour votre aide :

<link href="../../css/style.css" rel="stylesheet" type="text/css">
<style type="text/css">a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
}
a:active {
text-decoration: none;
}
a:link {
text-decoration: none;
}
</style>

<?php


$tabmenu=array(
"choixmenu"=>array(
array("Le comité d'entreprise","ce.php"),
array("La billetterie","billetterie.php"),
array("Voyages / Sorties","voyages.php"),
array("Services / Tarifs","services.php"),
array("Liens","liens.php")
),

);

function fct_menu($liste,$selection="0"){
print("<table width=\"780\" height=\"25\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" >");
for($n=0;$n<count($liste);$n=$n+1){
print("<TD ");

if ($n==$selection)
{
print("class=\"texteblanc\"");
}
else
{
print("class=\"texteblanc\"");
}
$a=$liste[$n];
print("><A href=\"index.php?menu=$n\"> $a[0] </A></TD>");
}
print("</table>");
};

fct_menu($tabmenu["choixmenu"],$HTTP_GET_VARS['menu']);

?>

6 réponses

flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
12 mai 2004 à 10:07
Si tu utilises la version 4.2 de PHP ou plus, les variables globales ne sont plus activées par défaut, pour des raisons de sécurité.

Tu as donc 2 solutions:

- Soit tu vas dans le fichier de configuration de PHP et tu réactives les variables globales.

- Soit tu changes ta dernière ligne en fct_menu($tabmenu["choixmenu"],$GET_['menu']);



.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Taboujr Messages postés 507 Date d'inscription vendredi 18 janvier 2002 Statut Membre Dernière intervention 2 janvier 2008 117
12 mai 2004 à 10:24
Hmm, j'ai un doute. D'abord c'est $_GET et pas $GET (mais l'erreur est humaine). Mais a priori, si l'index n'existe pas dans $HTTP_GET_VARS, il n'existera pas non plus dans $_GET.

A mon avis, le plus simple est de vérifier l'existence de l'index 'menu' avec la fonction array_key_exists et si il n'existe pas, de le créer en lui affectant une valeur par défaut.

Exemple :
if (!array_key_exists('menu',$_GET)) $_GET['menu']=0;


.:: TaBou JuNioR ::.
J'ai des questions à toutes vos réponses. [W. Allen]
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
12 mai 2004 à 10:30
Oui excuse moi pour l'erreur, mais c'est parce que j'ai juste enlevé des bouts de ton code d'origine, d'où l'erreur.

Pour en revenir à ton message je dirais que ça dépend.

Soit effectivement l'index n'est pas transmis et dans ce cas ça ne changera rien.

Mais, je répète, ça peut venir aussi du fait que tes variables globales ne sont pas activées, donc si tu fais un $HTTP_GET_VARS, l'index n'existera pas, mais si tu utilises $_GET et que l'index est bien transmis, ça fonctionnera car $_GET n'utilise pas les variables globales.


.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
12 mai 2004 à 10:41
Hello,
$_GET est strictement identique à $HTTP_GET_VARS. $_GET est une contraction (dixit le manuel php).

Kalamit,
Parle à ma culasse, mon carter est malade. :)
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281 > Utilisateur anonyme
12 mai 2004 à 10:51
Dans mon manuel de PHP, il est écrit que $_GET est une 'superglobal', tandis que $HTTP_GET_VARS n'est pas autoglobale.

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Merci pour vos réponses je vais tester les différents solutions que vous me proposez.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai testé les différentes solutions avec le $_get cela ne fonctionne pas .

par contre avec : if (!array_key_exists('menu',$_GET)) $_GET['menu']=0; il ne m'ammfciheplus le contenu de mon menu et sous menu il doit lui manquer queleque chose...
0
Alors ca marche pr le menu en haut mais par pour le sous menu :


<link href="../../css/style.css" rel="stylesheet" type="text/css">

<?php

$tab=array(
"billetterie"=>array(
array("Sports / Détente","sports.php"),
array("Spectacles / CIE","spectacles.php"),
array("Cinémas","cinemas.php"),
array("Parcs d'attraction / Zoos","parcs.php"),
array("Location vidéos","videos.php")
),
"autre"=>array(
array("Autre","billetterie.php"),
array("Spectacles / CIE","spectacles.php"),
array("Cinémas","cinemas.php"),
array("Parcs / Zoos","parcs.php"),
array("Location vidéos","videos.php")
)
);

function fct_sousmenu($liste,$selection="0"){
print("<table width=\"110\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" >");
for($n=0;$n<count($liste);$n=$n+1){
print("<TR><TD ");

if ($n==$selection)
{
print("class=\"overssmenu\"");
}
else
{
print("class=\"onssmenu\"");
}
$a=$liste[$n];
print("><A href=\"index.php?sousmenu=$n\"> $a[0] </A></TD></TR>");
}
print("</table>");
};
if (!array_key_exists('sousmenu',$_GET)) $_GET['sousmenu']=0;
fct_sousmenu($tab["billetterie"],$HTTP_GET_VARS['sousmenu']);

?>
0