Pb variable PHP undefined

Vixg@ge -  
 Vixage -
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']);

?>
A voir également:

6 réponses

flokocha Messages postés 1510 Date d'inscription   Statut Membre Dernière intervention   281
 
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   Statut Membre Dernière intervention   117
 
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   Statut Membre Dernière intervention   281
 
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
 
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   Statut Membre Dernière intervention   281 > Utilisateur anonyme
 
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
Vixage
 
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
Vixage
 
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
Vixage
 
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