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']);

?>

6 réponses

  1. flokocha Messages postés 1519 Statut Membre 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
  2. Taboujr Messages postés 507 Statut Membre 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
  3. flokocha Messages postés 1519 Statut Membre 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
    1. kalamit
       
      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
      1. flokocha Messages postés 1519 Statut Membre 281 > kalamit
         
        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
  4. Vixage
     
    Merci pour vos réponses je vais tester les différents solutions que vous me proposez.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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