Hallo Martin,
...
Die Funktion isset($v) prüft nur, ob die Variable $v existiert und einen definierten Wert hat.
URLs enthalten keine Variablen, sondern bestenfalls URL-Parameter. Diese Parameter werden von PHP als Array in der Variablen $_GET zur Verfügung gestellt.
Jeder URL-Parameter (bestehend aus Name, einem Gleichheitszeichen und optional einem Wert) wird als Eintrag in $_GET wiedergegeben.
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