mac: Menüpunkte per GET übergeben

Beitrag lesen

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