Wilas: Menü-Erstellung - Problem mit Verzweigung/Variablen

Hello!

Ich erstelle ein Menü, dessen Code von PHP generiert wird.
Am Anfang habe ich:

<?php
  $activeMenuItem == 'projekt';

function menu1($menuItem,$menuItemText) {
    if ($menuItem == $activeMenuItem) {
      echo "<tr><td class=menuOn>$menuItemText</td></tr>";
    } else {
      echo "<tr><td class=menu><a href=$menuItem.php>$menuItemText</a></td></tr>";
    }
?>

An geeigneter Stelle im Code habe ich dann zB.:

<?php
  menu1('unternehmen','Das Unternehmen');
  menu1('projekt','Das Projekt');
  menu1('modellierung','Die Modellierung');
?>

Funktioniert alles, außer:
Der Punkt "Projekt" wird nicht als aktiv genommen. Irgendetwas klappt bei der IfElse Verzweigung oder bei den Variablen nicht, aber was??

Vielen Dank im voraus für Eure Hilfe!

Grüße aus Wien
Wilas

  1. Ich habe mir nich mal die hälfte durchgelesen aber du musst auf jeden Fall in die Funktion menu1 ein "global $activeMenuItem;" einfügen.
    Mal sehen obs dann geht.
    Gruß
    Hanno

  2. Holladiewaldfee,

    $activeMenuItem == 'projekt';

    function menu1($menuItem,$menuItemText) {
        if ($menuItem == $activeMenuItem) {

    Du kannst nicht in einer Funktion auf Variablen zugreifen, die außerhalb von dieser definiert wurden.

    Verwende $GLOBALS['activeMenuItem'] oder
    global $activeMenuItem;

    Der Punkt "Projekt" wird nicht als aktiv genommen. Irgendetwas klappt bei der IfElse Verzweigung oder bei den Variablen nicht, aber was??

    In so einem Fall solltest Du Dir immer die abgefragten Variablen ausgeben lassen und schauen, was drin steht. Dann kommst Du relativ schnell selber auf den Trichter, wo der Fehler ist.

    Ciao,

    Harry

    --
      Man weiß erst was man hatte, wenn man es verloren hat.
      Intelligenz ist nicht zwingend etwas positives.
  3. Hallo,

    $activeMenuItem == 'projekt';

    Ist das ein Schreibfehler?
    Das soll doch eine Zuweisung sein, oder?
    $activeMenuItem = 'projekt';

    Gruß,
    Henning

    --
    Gruß aus Braunschweig
    SELF-Code: sh:( fo:| ch:{ rl:( br:> n4:( ie:( mo:) va:) de:] zu:} fl:( ss:| ls:<
  4. Ha!

    *Beides* war notwendig - "global" (Hinweis von Harry und Hanno) *und* natürlich Zuweisung statt "ist gleich" (Hinweis von Henning).

    Vielen Dank für Eure Hilfe!

    LG
    Wilas