mac: Menüpunkte per GET übergeben

Hallo,
ich versuche ein Aufklappmenü (mit CSS) nun über PHP zu steuern, damit ich die 'navi.php' in die Gesamt-PHP-Site einbinden kann.
Siehe hier.

im body:

<?php  
if (!isset($_GET["x"])){  
  
$navi = array (  
0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, "status" => 0 ),  
1 => array ( "id" => 2, "eintrag" => "menu 2", "first" => 0, "status" => 0 ),  
2 => array ( "id" => 3, "eintrag" => "menu 3", "first" => 0, "status" => 0 ),  
3 => array ( "id" => 4, "eintrag" => "menu 4", "first" => 0, "status" => 0 ),  
4 => array ( "id" => 5, "eintrag" => "menu 3a", "first" => 1, "status" => 0 ),  
5 => array ( "id" => 6, "eintrag" => "menu 4a", "first" => 1, "status" => 0 ),  
6 => array ( "id" => 7, "eintrag" => "menu 4b", "first" => 1, "status" => 0 ),  
7 => array ( "id" => 8, "eintrag" => "menu 4c", "first" => 1, "status" => 0 )  
);  
  
} else {  
$navi = $_SESSION["navi"];  
if ($navi[$_GET["x"]]["status"] == 0) {  
    $navi[$_GET["x"]]["status"] = 1;  
    } else {  
    $navi[$_GET["x"]]["status"] = 0;  
    }  
}  
  
function struktur($ID) {  
  global $navi;  
  
    for ($x = 0; $x < count($navi); $x++){  
      if ($navi[$x]["first"]==$ID) {  
        echo "<dl>";  
        echo "".$navi[$x]["eintrag"]."";  
      if ($navi[$x]["status"] == 1) {  
          struktur($navi[$x]["id"]);  
        }  
        echo "";  
        echo "[/dl]";  
      }  
    }  
  
}  
struktur(0);  
?>

im head:

<?php session_start();?>  

Ich würde mich freuen, wenn jemand mal drüber schauen könnte.
Menü 3 und 4 müssten aufgeklappt bleiben wenn man blau oder magenta anklickt, tun sie aber nicht :-(
Danke.
Gruß
Mac

  1. hallo,

    ich versuche ein Aufklappmenü (mit CSS) nun über PHP zu steuern, damit ich die 'navi.php' in die Gesamt-PHP-Site einbinden kann.

    du willst per GET dein Menü steuern, bzw. mittels GET bestimmen, was angezeigt werden soll, seh ich das richtig?

    if (!isset($_GET["x"])){
    [...]

    hier fragst du nach x in der url. es gibt aber nirgends ein x, egal, auf welchen link ich klicke.

    <?php session_start();?>

    Das hat mit Sessions nichts zu tun.

    Wenn ich dich richtig verstanden habe, dann solltest du dich über die Funktionsweise von GET nochmal informieren. if(!isset($_GET["x"]) ist immer wahr, da nie ein x in der URL auftaucht.

    --
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
    1. ...ich hab die URL im array vergessen und nun (siehe unter ) eingesetzt.
      if (!isset($_GET["x"]))Das ist die Variable, die in der URL übergeben wird.

      if (!isset($_GET["x"])){  
        
      $navi = array (  
      0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, "href" =>"navi.php", "status" => 0 ),  
      1 => array ( "id" => 2, "eintrag" => "menu 2", "first" => 0, "href" =>"navi.php", "status" => 0 ),  
      2 => array ( "id" => 3, "eintrag" => "menu 3", "first" => 0, "href" =>"navi.php", "status" => 0 ),  
      3 => array ( "id" => 4, "eintrag" => "menu 4", "first" => 0, "href" =>"navi.php", "status" => 0 ),  
      4 => array ( "id" => 5, "eintrag" => "menu 3a", "first" => 1, "href" =>"navi.php","status" => 0 ),  
      5 => array ( "id" => 6, "eintrag" => "menu 4a", "first" => 1, "href" =>"navi.php", "status" => 0 ),  
      6 => array ( "id" => 7, "eintrag" => "menu 4b", "first" => 1, "href" =>"navi.php", "status" => 0 ),  
      7 => array ( "id" => 8, "eintrag" => "menu 4c", "first" => 1, "href" =>"navi.php", "status" => 0 )  
      );
      
      1. hallo,

        if (!isset($_GET["x"]))Das ist die Variable, die in der URL übergeben wird.

        damit prüfst du nur, ob die Variable nicht vorhanden ist. Sie ist, egal bei welchem Klick, _nie_ vorhanden

        http://www.example.com/index.php?x=blau

        in diesem Beispiel ist sie vorhanden und hat den wert 'blau'
        jetzt fragst du ab, ob die Variable da ist und welchen (auf Sicherheit geprüften) Wert sie hat. Damit kannst du dann dein Menü steuern

        --
        "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
        1. hallo,

          if (!isset($_GET["x"]))Das ist die Variable, die in der URL übergeben wird.

          damit prüfst du nur, ob die Variable nicht vorhanden ist. Sie ist, egal bei welchem Klick, _nie_ vorhanden

          http://www.example.com/index.php?x=blau

          in diesem Beispiel ist sie vorhanden und hat den wert 'blau'
          jetzt fragst du ab, ob die Variable da ist und welchen (auf Sicherheit geprüften) Wert sie hat. Damit kannst du dann dein Menü steuern

          »»

          Hallo,
          die Variable 'x' ist die jeweilige URL, die im Menü angegeben wird.
          Wo ich diese Variable definieren muss, ist mir nicht klar.
          Im 'array' wird gesagt, ob es sich um ein Hauptmenüpunkt oder ein Untermenüpunkt handelt.

          if (!isset($_GET["x"])){  
            
          $navi = array (  
          0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, "href" =>"navi.php", "status" => 0 ),
          
          1. hey,

            http://tut.php-q.net/de/get.html

            schau dir das an, dann verstehst du auch, was ich meine.

            --
            "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
            1. hey,

              http://tut.php-q.net/de/get.html

              schau dir das an, dann verstehst du auch, was ich meine.

              Hi,
              danke erstmal für Deine Geduld - ich bin sehr schwer von Begriff ;-)

              Also, bei isset wird geprüft ob nach der URL eine Variable z.B. hier "blau" vorhanden ist.~~~php if (!isset($_GET["x"])){
              $navi = array (
              4 => array ( "id" => 5, "eintrag" => "menu 3a", "first" => 1, "href" =>"blau", "status" => 0 ),

              mit $\_GET wird die URL ausgelesen und die Variable "x" in diesem Fall "bau" angehängt.  
              Interpretiere ich das so richtig?
              
              1. Hallo,

                hey,
                [...]
                schau dir das an, dann verstehst du auch, was ich meine.
                Hi,

                bitte kein TOFU (Vollzitat), auch wenn das Vorposting kurz ist - das ist schlechter Stil und macht den Beitrag nicht gerade übersichtlicher.

                danke erstmal für Deine Geduld - ich bin sehr schwer von Begriff ;-)

                Soso. ;-)

                Also, bei isset wird geprüft ob nach der URL eine Variable z.B. hier "blau" vorhanden ist.~~~php

                if (!isset($_GET["x"])){

                $navi = array (
                4 => array ( "id" => 5, "eintrag" => "menu 3a", "first" => 1, "href" =>"blau", "status" => 0 ),

                
                > mit $\_GET wird die URL ausgelesen und die Variable "x" in diesem Fall "bau" angehängt.  
                > Interpretiere ich das so richtig?  
                  
                Nein. Du schmeißt hier einiges zusammen und mixt die tatsächlichen Abhängigkeiten schön durcheinander.  
                  
                1\. Die Funktion [isset($v)](http://de2.php.net/manual/en/function.isset.php) prüft nur, ob die Variable $v existiert und einen definierten Wert hat.  
                  
                2\. URLs enthalten keine Variablen, sondern bestenfalls URL-Parameter. Diese Parameter werden von PHP als Array in der Variablen $\_GET zur Verfügung gestellt.  
                  
                3\. Jeder URL-Parameter (bestehend aus Name, einem Gleichheitszeichen und optional einem Wert) wird als Eintrag in $\_GET wiedergegeben.  
                  
                4\. mit $\_GET wird nicht "die URL ausgelesen", sondern lediglich auf die URL-Parameter zugegriffen.  
                  
                Fazit: Mit der Abfrage  
                 if (isset($\_GET["x"]))  
                prüfst du also nur, ob ein URL-Parameter namens x übergeben wurde, der Query-String also einen mit x= beginnenden Eintrag enthält. Dabei ist noch nichts über den Wert des Parameters x ausgesagt - den erhältst du, wenn du tatsächlich $\_GET["x"] abfragst.  
                  
                Aus [deinem Quellcode](http://www.formfalt.net/navitest/) werde ich übrigens auch nicht schlau ...  
                  
                So long,  
                 Martin  
                
                -- 
                Die neue E-Mailadresse des Papstes: <mailto:urbi@orbi>  
                
                
                1. Hallo Martin,
                  ...

                  1. Die Funktion isset($v) prüft nur, ob die Variable $v existiert und einen definierten Wert hat.

                  2. URLs enthalten keine Variablen, sondern bestenfalls URL-Parameter. Diese Parameter werden von PHP als Array in der Variablen $_GET zur Verfügung gestellt.

                  3. Jeder URL-Parameter (bestehend aus Name, einem Gleichheitszeichen und optional einem Wert) wird als Eintrag in $_GET wiedergegeben.

                  4. mit $_GET wird nicht "die URL ausgelesen", sondern lediglich auf die URL-Parameter zugegriffen.

                  Fazit: Mit der Abfrage
                  if (isset($_GET["x"]))
                  prüfst du also nur, ob ein URL-Parameter namens x übergeben wurde, der Query-String also einen mit x= beginnenden Eintrag enthält. Dabei ist noch nichts über den Wert des Parameters x ausgesagt - den erhältst du, wenn du tatsächlich $_GET["x"] abfragst.

                  »»
                  Okay, das habe ich verstanden, aber an welcher Stelle ich den URL-Parameter "x" setzen muss, dessen Wert später über $_GET["x"]abgefragt wird, weiß ich noch nicht.

                  Mein Versuch mit
                  "href" =>"x",
                  ist falsch.

                  Hier noch einmal mein bisheriger PHP-Code in der 'navi.php':

                  <?php  
                  if (!isset($_GET["x"])){  
                    
                  $navi = array (  
                  0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, <?php  
                  if (!isset($_GET["x"])){  
                    
                  $navi = array (  
                  0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, "href" =>"x", "status" => 0 ),  
                  1 => array ( "id" => 2, "eintrag" => "menu 2", "first" => 0, "href" =>"x", "status" => 0 ),  
                  2 => array ( "id" => 3, "eintrag" => "menu 3", "first" => 0, "href" =>"x", "status" => 0 ),  
                  3 => array ( "id" => 4, "eintrag" => "menu 4", "first" => 0, "href" =>"x", "status" => 0 ),  
                  4 => array ( "id" => 5, "eintrag" => "menu 3a", "first" => 1, "href" =>"x", "status" => 0 ),  
                  5 => array ( "id" => 6, "eintrag" => "menu 4a", "first" => 1, "href" =>"x", "status" => 0 ),  
                  6 => array ( "id" => 7, "eintrag" => "menu 4b", "first" => 1, "href" =>"x", "status" => 0 ),  
                  7 => array ( "id" => 8, "eintrag" => "menu 4c", "first" => 1, "href" =>"x", "status" => 0 )  
                  );  
                    
                  } else {  
                  $navi = $_SESSION["navi"];  
                  if ($navi[$_GET["x"]]["status"] == 0) {  
                  		$navi[$_GET["x"]]["status"] = 1;  
                  		} else {  
                  		$navi[$_GET["x"]]["status"] = 0;  
                  		}  
                  }  
                    
                  function struktur($ID) {  
                  	global $navi;  
                  		  
                  		for ($x = 0; $x < count($navi); $x++){  
                  			if ($navi[$x]["first"]==$ID) {  
                  				echo "<dl>";  
                  				echo "".$navi[$x]["eintrag"]."";  
                  			if ($navi[$x]["status"] == 1) {  
                  			  	struktur($navi[$x]["id"]);	  
                  				}  
                  				echo "";  
                  				echo "[/dl]";  
                  			}  
                  		}  
                  	  
                  }  
                  struktur(0);  
                  ?> 
                  

                  Aus deinem Quellcode werde ich übrigens auch nicht schlau ...

                  Die Ausgabe:
                  <dl>menu 1[/dl]<dl>menu 2[/dl]<dl>menu 3[/dl]<dl>menu 4[/dl]
                  wird bisher von PHP ausgegeben.
                  Der untere Teil zeigt, wie es aussehen soll. Nur dass die Navigation z. B. beim Menü 3 aufgeklappt bleiben soll, wenn man dort auf 'blau' klickt.
                  Viele Grüße
                  Mac

                  1. hallo,

                    Okay, das habe ich verstanden, aber an welcher Stelle ich den URL-Parameter "x" setzen muss, dessen Wert später über $_GET["x"]abgefragt wird, weiß ich noch nicht.

                    1. du kannst die Parameter direkt in Verlinkungen setzen
                    -> <a href="index.php?x=blau">Link</a>

                    klickst du nun auf den Link, wird die gewünschte Seite geladen und der Parameter x mit dem Wert 'blau' ist in der URL verfügbar

                    2. du kannst es auch über ein Formular machen, indem du das Attribut method im form-Element auf 'get' setzt. Die Parameter, die dann beim Aufruf in die URL gelangen, sind input/textarea-Elemente innerhalb des Formulars, denen du einen Namen und Inhalt gibst.

                    Für deine Navigation ist aber die erste Variante sinnvoller, denke ich.

                    --
                    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                  2. Hi,

                    Okay, das habe ich verstanden, aber an welcher Stelle ich den URL-Parameter "x" setzen muss, dessen Wert später über $_GET["x"]abgefragt wird, weiß ich noch nicht.

                    ich auch nicht, da ich keine einzige Stelle in deinem Codeausschnitt sehe, an der du einen Link erzeugst.

                    Mein Versuch mit
                    "href" =>"x",
                    ist falsch.

                    Der Code an sich mag richtig sein, aber ohne Zusammenhang ergibt er wenig Sinn.

                    Hier noch einmal mein bisheriger PHP-Code in der 'navi.php':
                    <?php
                    if (!isset($_GET["x"])){

                    Wenn die Adresszeile keinen URL-Parameter mit dem Namen x enthält, ...

                    $navi = array (
                    0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, <?php
                    if (!isset($_GET["x"])){

                    (Das hier war wohl ein Copy&Paste-Unfall?)

                    $navi = array (
                    [...]
                    );

                    ... dann initialisiere eine Array-Variable $navi.

                    } else {

                    Wenn doch, ...

                    $navi = $_SESSION["navi"];

                    ... dann hole $navi aus der Session. Wo speicherst du $navi in die Session? Nach dem, was du bisher gezeigt hast, kann da nichts sein.

                    if ($navi[$_GET["x"]]["status"] == 0) {

                    Aha. Dein URL-Parameter x wird also als Key für das $navi-Array verwendet, wird hier also als x=0 erwartet. Also müsste das Script insgesamt mit http://example.org/?x=0 aufgerufen worden sein.

                    Die Ausgabe:
                    <dl>menu 1[/dl]<dl>menu 2[/dl]<dl>menu 3[/dl]<dl>menu 4[/dl]
                    wird bisher von PHP ausgegeben.

                    Und warum stehen dann die schließenden Tags in [] und nicht in <>?

                    Ciao,
                     Martin

                    --
                    Ein guter Lehrer muss seinen Schülern beibringen können,
                    eine Frage so zu stellen, dass auch der Lehrer lernen muss,
                    um die Frage beantworten zu können.
                      (Hesiod, griech. Philosoph, um 700 v.Chr.)
                    1. Hallo,
                      ...

                      ich auch nicht, da ich keine einzige Stelle in deinem Codeausschnitt sehe, an der du einen Link erzeugst.

                      Mein Versuch mit
                      "href" =>"x",
                      ist falsch.

                      Der Code an sich mag richtig sein, aber ohne Zusammenhang ergibt er wenig Sinn.

                      Hier noch einmal mein bisheriger PHP-Code in der 'navi.php':
                      <?php
                      if (!isset($_GET["x"])){

                      Wenn die Adresszeile keinen URL-Parameter mit dem Namen x enthält, ...

                      $navi = array (
                      0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, <?php
                      if (!isset($_GET["x"])){

                      (Das hier war wohl ein Copy&Paste-Unfall?)

                      Ja, zu alledem mach ich auch noch solche Fehler, entschuldige bitte!

                      $navi = array (
                      [...]
                      );

                      ... dann initialisiere eine Array-Variable $navi.

                      } else {

                      Wenn doch, ...

                      $navi = $_SESSION["navi"];

                      ... dann hole $navi aus der Session. Wo speicherst du $navi in die Session? Nach dem, was du bisher gezeigt hast, kann da nichts sein.

                      Am Anfang der 'navi.php' also noch vor dem html-tag, habe ich

                      <?php  
                      session_start();  
                      ?>
                      

                      und hier wird die $navi in $_SESSION gespeichert.

                      } else {  
                      $navi = $_SESSION["navi"];
                      

                      if ($navi[$_GET["x"]]["status"] == 0) {

                      Aha. Dein URL-Parameter x wird also als Key für das $navi-Array verwendet, wird hier also als x=0 erwartet. Also müsste das Script insgesamt mit http://example.org/?x=0 aufgerufen worden sein.

                      Die Ausgabe:
                      <dl>menu 1[/dl]<dl>menu 2[/dl]<dl>menu 3[/dl]<dl>menu 4[/dl]
                      wird bisher von PHP ausgegeben.

                      Und warum stehen dann die schließenden Tags in [] und nicht in <>?

                      Noch so ein dummer Fehler.
                      Gruß, mac

                      Ciao,
                      Martin

                      1. Hallo Martin,

                        ...

                        ich auch nicht, da ich keine einzige Stelle in deinem Codeausschnitt sehe, an der du einen Link erzeugst.

                        In der 'function struktur ($ID)

                        echo "".$navi[$x]["eintrag"]."";

                        ist doch
                        ".$navi[$x]["eintrag"]."
                        der Link, oder nicht?

                        Gruß
                        Mac

                        1. Hallo,

                          In der 'function struktur ($ID)

                          echo "".$navi[$x]["eintrag"]."";

                          ist doch
                          ".$navi[$x]["eintrag"]."
                          der Link, oder nicht?

                          nein. Die beiden Leerstrings rechts und links, die du mit dem restlichen Ausdruck verkettest, sind in der Form sowieso überflüssig, ebenso als wolltest du 0+5+0 berechnen.Und mal angenommen, $x sei 0, dann erzeugt diese Anweisung den HTML-Code

                          menu 1

                          Ist das ein Link? Nein. Ein Link ist ein a-Element mit einem href-Attribut:

                          <a href="ziel-url">Linktext</a>

                          So long,
                           Martin

                          --
                          Männer haben nur eine Angst: Die Angst, kein Mann zu sein.
                            (Liv Tyler, US-Schauspielerin)
                          1. Hallo,

                            In der 'function struktur ($ID)

                            echo "".$navi[$x]["eintrag"]."";

                            ist doch
                            ".$navi[$x]["eintrag"]."
                            der Link, oder nicht?

                            nein. Die beiden Leerstrings rechts und links, die du mit dem restlichen Ausdruck verkettest, sind in der Form sowieso überflüssig, ebenso als wolltest du 0+5+0 berechnen.Und mal angenommen, $x sei 0, dann erzeugt diese Anweisung den HTML-Code

                            menu 1

                            ...so, jetzt hab ich zumindest mal den Link für den obersten Menüpunkt hinbekommen :-)
                            echo '<a href="'.$navi[$x]["eintrag"].'">'.$navi[$x]["eintrag"].'</a>';

                            ...mit dem Untermenüpunkt klappt es nicht :-( und das Verweisziel (z.B. blau.php) muss doch im '$navi = array' stehen, aber da mit meinem Einfügen von "href" =>"blau.php", bin ich ja auf dem Holzweg - aber eine andere Idee, hab ich nicht.
                            Darf ich noch mal um Tipps bitten?
                            Gruß
                            Mac

                            1. hiho

                              Darf ich noch mal um Tipps bitten?

                              hm... so?

                              echo"Punkt 1";  
                                if(intval($_GET['x']) == 1)  
                                 echo"Unterpunkte zu Punkt 1";  
                                
                              echo"Punkt 2";  
                                if(intval($_GET['x']) == 2)  
                                 echo"Unterpunkte zu Punkt 2";
                              

                              [...]

                              echo"Punkt n";  
                                if(intval($_GET['x']) == n)  
                                 echo"Unterpunkte zu Punkt n";
                              
                              --
                              "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                              1. Hi!

                                hiho

                                Darf ich noch mal um Tipps bitten?

                                hm... so?

                                echo"Punkt 1";

                                if(intval($_GET['x']) == 1)
                                   echo"Unterpunkte zu Punkt 1";

                                echo"Punkt 2";
                                  if(intval($_GET['x']) == 2)
                                   echo"Unterpunkte zu Punkt 2";

                                
                                >   
                                > [...]  
                                >   
                                > ~~~php
                                
                                echo"Punkt n";  
                                
                                >   if(intval($_GET['x']) == n)  
                                >    echo"Unterpunkte zu Punkt n";
                                
                                

                                ...wie sollte dann dieses array aussehen?

                                $navi = array (  
                                0 => array ( "id" => 1, "eintrag" => "menu 1", "first" => 0, "status" => 0 ),  
                                1 => array ( "id" => 2, "eintrag" => "menu 2", "first" => 0, "status" => 0 ),  
                                2 => array ( "id" => 3, "eintrag" => "menu 3", "first" => 0, "status" => 0 ),  
                                3 => array ( "id" => 4, "eintrag" => "menu 4", "first" => 0, "status" => 0 ),  
                                4 => array ( "id" => 5, "eintrag" => "menu 3a", "first" => 1, "status" => 0 ),  
                                5 => array ( "id" => 6, "eintrag" => "menu 4a", "first" => 1, "status" => 0 ),  
                                6 => array ( "id" => 7, "eintrag" => "menu 4b", "first" => 1, "status" => 0 ),  
                                7 => array ( "id" => 8, "eintrag" => "menu 4c", "first" => 1, "status" => 0 )  
                                );
                                

                                Ergebnis muss sein: siehe untere Navigation, die beim Klick auf die Unternavigation aufgeklappt bleiben soll.
                                Gruß
                                Mac

                                1. hey,

                                  ...wie sollte dann dieses array aussehen?

                                  ich versteh den Sinn davon ehrlich gesagt nicht. was bedeutet 'first' und 'status'?

                                  --
                                  "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                                  1. hey,

                                    ...wie sollte dann dieses array aussehen?

                                    ich versteh den Sinn davon ehrlich gesagt nicht. was bedeutet 'first' und 'status'?

                                    ...die navi.php soll per include in jede Datei eingebunden werden, die über die Navigationspunkte geladen wird. Deshalb muss überprüft werden, wie der Status des Menüs ist -ob Untermenüs sichtbar sind oder nicht.

                                    Mac

                                    1. ...die navi.php soll per include in jede Datei eingebunden werden, die über die Navigationspunkte geladen wird. Deshalb muss überprüft werden, wie der Status des Menüs ist -ob Untermenüs sichtbar sind oder nicht.

                                      mach das über den GET-Parameter und nicht über diesen Blumenstrauß von einem Array.

                                      Menü 1 hat die Id 1. Wenn man drauf klickt, kommt man zur seite blub.php?x=1, also zur Übersichtsseite zu Menü 1.
                                      unter Menü 1 ist eine if-Abfrage, die abfragt, ob x den Wert 1 hat. Wenn das der Fall ist, werden die Links der Unterpunkte angezeigt, ansonsten _nie_.

                                      echo'Menü 1';
                                        if(intval($_GET['x']) == 1)
                                        {echo'Unterpunkt 1
                                         Unterpunkt 2
                                         Unterpunkt 3';
                                        }
                                      usw.

                                      --
                                      "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                                      1. ...die navi.php soll per include in jede Datei eingebunden werden, die über die Navigationspunkte geladen wird. Deshalb muss überprüft werden, wie der Status des Menüs ist -ob Untermenüs sichtbar sind oder nicht.

                                        mach das über den GET-Parameter und nicht über diesen Blumenstrauß von einem Array.

                                        Menü 1 hat die Id 1. Wenn man drauf klickt, kommt man zur seite blub.php?x=1, also zur Übersichtsseite zu Menü 1.
                                        unter Menü 1 ist eine if-Abfrage, die abfragt, ob x den Wert 1 hat. Wenn das der Fall ist, werden die Links der Unterpunkte angezeigt, ansonsten _nie_.

                                        echo'Menü 1';
                                          if(intval($_GET['x']) == 1)
                                          {echo'Unterpunkt 1
                                           Unterpunkt 2
                                           Unterpunkt 3';
                                          }
                                        usw.

                                        Okay, ich versuchs.
                                        Das 'intwal' ist mir ganz unbekannt.

                                        Die ID muss ich also zuerst deklarieren - richtig?

                                        <?php  
                                         <dl class="menu">  
                                        	<dt>  
                                        	echo '<a href="leer.php?x=1">'Menü 1'</a>';  
                                            </dt>  
                                        	<dd>  
                                        		if(intval($_GET['x']) == 1)  
                                          		{echo'<a href="blau.php">'menue 3a'</a>';}  
                                        	</dd>  
                                          </dl>  
                                        ?>
                                        

                                        In die HTML-Struktur möchte ich dann die Ausgabe 'echo' gleich einbinden.
                                        ??
                                        Mac

                                        1. guten Morgen,

                                          Das 'intwal' ist mir ganz unbekannt.

                                          intval, mit Vögel-V

                                          <?php

                                          <dl class="menu">
                                          <dt>
                                          echo '<a href="leer.php?x=1">'Menü 1'</a>';
                                              </dt>
                                          <dd>
                                          if(intval($_GET['x']) == 1)
                                             {echo'<a href="blau.php">'menue 3a'</a>';}
                                          </dd>
                                            </dl>
                                          ?>

                                            
                                          fast richtig. Wenn du auf Menü 1 klickst, sollen doch die Unterpunkte von Menü 1 eingeblendet werden und die anderen nicht.  
                                          da gehört also menue 1a rein, wenn es vorhanden ist.  
                                          Für die Menüs 2-4 dann das gleiche nochmal, halt je nachdem, welches Menü bei dir Unterpunkte besitzt  
                                            
                                          Das <dd> Element würde ich außerdem mit in die Abfrage legen, sonst wird dir ein leerer Listenpunkt angezeigt, wenn x nicht 1 ist.  
                                            
                                          also->  
                                          if(intval($\_GET['x']) == 1)  
                                          {  
                                          echo'<dd>  
                                          <a href="blau.php">'menue 1a'</a>  
                                          </dd>';  
                                          }  
                                            
                                            
                                          
                                          > In die HTML-Struktur möchte ich dann die Ausgabe 'echo' gleich einbinden.  
                                            
                                          tu es  
                                            
                                          ciao
                                          
                                          -- 
                                          "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                                          
                                          1. guten Morgen,

                                            Das 'intwal' ist mir ganz unbekannt.

                                            intval, mit Vögel-V

                                            <?php

                                            <dl class="menu">
                                            <dt>
                                            echo '<a href="leer.php?x=1">'Menü 1'</a>';
                                                </dt>
                                            <dd>
                                            if(intval($_GET['x']) == 1)
                                               {echo'<a href="blau.php">'menue 3a'</a>';}
                                            </dd>
                                              </dl>
                                            ?>

                                            
                                            >   
                                            > fast richtig. Wenn du auf Menü 1 klickst, sollen doch die Unterpunkte von Menü 1 eingeblendet werden und die anderen nicht.  
                                            > da gehört also menue 1a rein, wenn es vorhanden ist.  
                                            > Für die Menüs 2-4 dann das gleiche nochmal, halt je nachdem, welches Menü bei dir Unterpunkte besitzt  
                                            >   
                                            > Das <dd> Element würde ich außerdem mit in die Abfrage legen, sonst wird dir ein leerer Listenpunkt angezeigt, wenn x nicht 1 ist.  
                                            >   
                                            > also->  
                                            > if(intval($\_GET['x']) == 1)  
                                            > {  
                                            > echo'<dd>  
                                            > <a href="blau.php">'menue 1a'</a>  
                                            > </dd>';  
                                            > }  
                                            >   
                                            
                                            Schönen Nachmittag!  
                                            Danke!  
                                              
                                            So hab ich's jetzt reingeschrieben - aber es wird nichts angezeigt :-(  
                                            ~~~php
                                            <body>  
                                            <?php  
                                              
                                            <div id="holder">  
                                              
                                             <dl class="menu">  
                                            	<dt>  
                                            	echo '<a href="leer.php?x=1">'Menü 1'</a>';  
                                                </dt>  
                                            	  
                                            		if(intval($_GET['x']) == 1)  
                                            		{  
                                            		echo'<dd>  
                                            		<a href="blau.php">'menue 1a'</a>  
                                            		</dd>';  
                                            		}  
                                              </dl>  
                                              <dl class="menu">  
                                            	<dt>  
                                            	echo '<a href="leer.php?x=2">'Menü 2'</a>';  
                                                </dt>  
                                            	  
                                            		if(intval($_GET['x']) == 2)  
                                            		{  
                                            		echo'<dd>  
                                            		<a href="magenta.php">'menue 2a'</a>  
                                            		</dd>';  
                                            		}  
                                              </dl>  
                                              
                                            </div>  
                                            ?>  
                                            </body>
                                            
                                            1. hallo,

                                              So hab ich's jetzt reingeschrieben - aber es wird nichts angezeigt :-(

                                              kein wunder...

                                              <body>

                                              <?php

                                              <div id="holder">

                                                
                                              Schon dafür hätte dir der Browser eine Fehlermeldung an den Kopf werfen müssen. Wenn nicht, dann schreib hinter <?php folgendes: error\_reporting(E\_ALL);  
                                                
                                              
                                              -- 
                                              "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                                              
                                              1. ...peinlich :-(

                                                <body>  
                                                <div id="holder">  
                                                  
                                                 <dl class="menu">  
                                                	<dt>  
                                                	<?php echo '<a href="leer.php?x=1">'Menü 1'</a>'; ?>  
                                                    </dt>  
                                                		<?php  
                                                		if(intval($_GET['x']) == 1)  
                                                		{  
                                                		echo'<dd>  
                                                		<a href="blau.php">'menue 1a'</a>  
                                                		</dd>';  
                                                		} ?>  
                                                  </dl>  
                                                  <dl class="menu">  
                                                	<dt>  
                                                	<?php echo '<a href="leer.php?x=2">'Menü 2'</a>'; ?>  
                                                    </dt>  
                                                		<?php  
                                                		if(intval($_GET['x']) == 2)  
                                                		{  
                                                		echo'<dd>  
                                                		<a href="magenta.php">'menue 2a'</a>  
                                                		</dd>';  
                                                		} ?>  
                                                  </dl>  
                                                </div>  
                                                </body>
                                                
                                                1. Hi,
                                                  welche haarsträubenden Fehler hab ich bei der Korr. gemacht?
                                                  Danke für Hilfe.
                                                  Gruß
                                                  Mac

                                                  1. Hi,
                                                    welche haarsträubenden Fehler hab ich bei der Korr. gemacht?
                                                    Danke für Hilfe.
                                                    Gruß
                                                    Mac

                                                    <dl class="menu">  
                                                    	<dt><?php echo "<a href="leer.php?x=1">Menü 1</a>";?>  
                                                        </dt>  
                                                    		<?php  
                                                    		if(intval($_GET["x"]) == 1)  
                                                    		{  
                                                    		echo "<dd>  
                                                    		<a href="blau.php">menue 1a</a>  
                                                    		</dd>";  
                                                    		} ?>  
                                                      </dl>  
                                                      <dl class="menu">  
                                                    	<dt>  
                                                     		<?php echo "<a href="leer.php?x=2">Menü 2</a>";?>  
                                                        </dt>  
                                                    		<?php  
                                                    		if(intval($_GET["x"]) == 2)  
                                                    		{  
                                                    		echo"<dd>  
                                                    		<a href="magenta.php">menue 2a</a>  
                                                    		</dd>";  
                                                    		} ?>  
                                                      </dl>  
                                                     
                                                    
                                                    1. hallo,

                                                      <dt><?php echo "<a href="leer.php?x=1">Menü 1</a>";?>

                                                      Auch wenn URLs Parameter enthalten, musst du die Ausgabe nicht mit php machen.
                                                      Das ist kein Fehler, du zündest nur das Streichholz für deine Kippe mit einem Feuerzeug an.

                                                      <a href="blau.php">menue 1a</a>

                                                      du klickst auf ein Untermenü des Menüs 1. Das soll also ausgeklappt bleiben. Folglich muss hier nach der Zieldatei auch der Parameter x mit entsprechender Zahl gesetzt werden und in jedem anderen Link auch, wenn das Menü ausgeklappt bleiben soll.

                                                      --
                                                      "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                                                      1. hallo,

                                                        <dt><?php echo "<a href="leer.php?x=1">Menü 1</a>";?>  
                                                        

                                                        Auch wenn URLs Parameter enthalten, musst du die Ausgabe nicht mit php machen.
                                                        Das ist kein Fehler, du zündest nur das Streichholz für deine Kippe mit einem Feuerzeug an.

                                                        <a href="blau.php">menue 1a</a>  
                                                        

                                                        du klickst auf ein Untermenü des Menüs 1. Das soll also ausgeklappt bleiben. Folglich muss hier nach der Zieldatei auch der Parameter x mit entsprechender Zahl gesetzt werden und in jedem anderen Link auch, wenn das Menü ausgeklappt bleiben soll.

                                                        okay,
                                                        nach der if-Abfrage, muss ich aber die Ausgabe in ein 'echo' packen und mit Anführungszeichen belegen, oder?

                                                        <dl class="menu">  
                                                        	<dt><a href="leer.php?x=1">Menü 1</a>  
                                                            </dt>  
                                                        		<?php  
                                                        		if(intval($_GET["x"]) == 1)  
                                                        		{  
                                                        		echo <dd>  
                                                        		'<a href="blau.php?x=1">'menue 1a'</a>'  
                                                        		</dd>;  
                                                        		} ?>  
                                                          </dl>  
                                                          <dl class="menu">  
                                                        	<dt>  
                                                         		<a href="leer.php?x=2">Menü 2</a>  
                                                            </dt>  
                                                        		<?php  
                                                        		if(intval($_GET["x"]) == 2)  
                                                        		{  
                                                        		echo "<dd>  
                                                        		<a href="magenta.php?x=2">menue 2a</a>  
                                                        		</dd>";  
                                                        		} ?>  
                                                          </dl>
                                                        
                                                        1. okay,
                                                          nach der if-Abfrage, muss ich aber die Ausgabe in ein 'echo' packen und mit Anführungszeichen belegen, oder?

                                                          ja, is ja auch php

                                                          --
                                                          "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                                                          1. Hi,
                                                            mit dem Aufklappen der Untermenüs (so wie es jetzt funktioniert) soll nun die aufgekappte Stellung bleiben, wenn man auf einen Unterpunkt klickt.
                                                            Hierfür denke ich, dass hierfür die 'session_id ()' in Frage kommt.
                                                            Ist das richtig oder ist das der falsche Weg?
                                                            Gruß
                                                            Mac

                                                            <dl class="menu">  
                                                            <dt>  
                                                            <?php  
                                                              echo '<a href="leer.php?x=2">Menü 2</a>';  
                                                            ?>  
                                                            </dt>  
                                                            <?php  
                                                                if(intval($_GET["x"]) == 2)  
                                                                {  
                                                                  echo '<dd>  
                                                                        <a href="magenta.php?x=2">menue 2a</a>  
                                                                        </dd>';  
                                                                }  
                                                            ?>  
                                                            </dl>
                                                            
                                                            1. Hi,
                                                              mit dem Aufklappen der Untermenüs (so wie es jetzt funktioniert) soll nun die aufgekappte Stellung bleiben, wenn man auf einen Unterpunkt klickt.
                                                              Hierfür denke ich, dass hierfür die 'session_id ()' in Frage kommt.
                                                              Ist das richtig oder ist das der falsche Weg?

                                                              Hallo!
                                                              um nun mit <?php SESSION_start();?> das Untermeü ausgeklappt zu lassen, wenn ein Unterpunkt ausgewählt wurde - bin ich nun wohl auch auf dem falschen Weg??
                                                              Fehlermeldung:
                                                              Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/web361/html/formfalt/navitest/index.php:10) in /var/www/web361/html/formfalt/navitest/navi.php on line 5

                                                              <dl class="menu">  
                                                              <?php  
                                                              if(intval($_GET["x"]) == 1)  
                                                              {  
                                                              $_SESSION['menu1'] = 'true';  
                                                              } elseif(intval($_GET["x"]) == -1) {  
                                                              $_SESSION['menu1'] = 'false';  
                                                              }  
                                                                
                                                                
                                                              if(intval($_GET["x"]) == 2)  
                                                              {  
                                                              $_SESSION['menu2'] = 'true';  
                                                              } elseif(intval($_GET["x"]) == -2) {  
                                                              $_SESSION['menu2'] = 'false';  
                                                              }  
                                                              ?>  
                                                                <dt><?php  
                                                                if($_SESSION['menu1'] = 'true') {  
                                                                echo '<a href="leer.php?x=1">Menü 1</a>';  
                                                                } else {  
                                                                echo' <a href="leer.php?x=-1">Menü 1</a>';  
                                                               } ?>  
                                                                </dt>  
                                                                
                                                              <?php  
                                                                  if($_SESSION['menu1'] == 'true')  
                                                                  {  
                                                                    echo '<dd>  
                                                                    <a href="blau.php?x=1">menue 1a</a>  
                                                                    <a href="magenta.php?x=1">menue 1b</a>  
                                                                    </dd>';  
                                                              	 }	  
                                                              ?>  
                                                              </dl>
                                                              

                                                              Danke für Hilfe.
                                                              Gruß
                                                              Mac

                                                              1. hallo,

                                                                In deiner Navigation wird abgefragt, wenn x = n ist, wird das nte Menü ausgeklappt. Die Links zu den Unterpunkten enthalten auch ?x=n und da du ja gesagt hast, die Navigation würde in jede Datei includiert, muss das Menü ausgeklappt bleiben. Solange x=n ist und die Navigation includiert wurde, wird Menü n ausgeklappt. Sessions brauchst du nicht.

                                                                und wegen der Warnung...
                                                                wenn mal wieder etwas nicht funktioniert, kannst du ruhig googlen, denn es gab vor dir schon x Leute, die das gleiche Problem wie du haben/hatten.
                                                                session_start solltest du möglichst ganz an den Anfang der Dateien schreiben.
                                                                Auch die Dokumentation ist nicht zum Spaß da.
                                                                http://www.php.net/session_start

                                                                --
                                                                "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
                                                                1. hallo,

                                                                  In deiner Navigation wird abgefragt, wenn x = n ist, wird das nte Menü ausgeklappt. Die Links zu den Unterpunkten enthalten auch ?x=n und da du ja gesagt hast, die Navigation würde in jede Datei includiert, muss das Menü ausgeklappt bleiben. Solange x=n ist und die Navigation includiert wurde, wird Menü n ausgeklappt. Sessions brauchst du nicht.

                                                                  und wegen der Warnung...
                                                                  wenn mal wieder etwas nicht funktioniert, kannst du ruhig googlen, denn es gab vor dir schon x Leute, die das gleiche Problem wie du haben/hatten.
                                                                  session_start solltest du möglichst ganz an den Anfang der Dateien schreiben.
                                                                  Auch die Dokumentation ist nicht zum Spaß da.
                                                                  http://www.php.net/session_start

                                                                  Ja, Leezeichen habe ich nicht beachtet.

                                                                  Hallo,
                                                                  ja, die 'navi.php' wird jeweils eingebunden - so: <? include ("navi.php"); ?>

                                                                  Hm, bei den Untermenüs ist x=1 bzw. für das 2. Menü x=2 usw., aber die Navi klappt beim Klick auf den Untermenüpunkt zu.

                                                                  <dl class="menu">  
                                                                    <dt>  
                                                                  <?php echo '<a href="leer.php?x=1">Menü 1</a>';?>  
                                                                    </dt>  
                                                                  <?php  
                                                                      if(intval($_GET["x"]) == 1)  
                                                                      {  
                                                                        echo '<dd>  
                                                                        <a href="blau.php?x=1">menue 1a</a>  
                                                                        <a href="magenta.php?x=1">menue 1b</a>  
                                                                        </dd>';  
                                                                  	 }	  
                                                                  ?>  
                                                                  </dl>
                                                                  
                                                                  1. In deiner Navigation wird abgefragt, wenn x = n ist, wird das nte Menü ausgeklappt. Die Links zu den Unterpunkten enthalten auch ?x=n und da du ja gesagt hast, die Navigation würde in jede Datei includiert, muss das Menü ausgeklappt bleiben. Solange x=n ist und die Navigation includiert wurde, wird Menü n ausgeklappt. Sessions brauchst du nicht.

                                                                    Noch etwas:
                                                                    Damit die Navigation überhaupt aufklappt (habe ich jetzt erst bemerkt) muss man 2mal auf den Hauptmenüpunkt klicken.

                                                                    <?php echo '<a href="blau.php?x=1">blau</a>';?>

                                                                    x=n (z.B. x=1) wird als Dateiname (blau.php?x=1)in der URL-Zeile im Browser angezeigt, aber das Menü reagiert erst beim zweiten Klick.

                                                                    Gruß
                                                                    Mac