Navigation index.php?section=links

kalle01

Grünschnabel
Hallo Gemeinde,

so nach dem ich mich ja hier schon registriert habe, sollte ich ja auch mal was schreiben. Hab mir hier schon einige Artikel zum Thema Navigation und auch den Workshop dazu durchgelesen, aber werd da nich so schlau draus.

Folgendes hab ich gemacht, eine index.php erstellt und folgenden Code eingebaut:

Code:
<?php
error_reporting(E_ALL);
switch($section){ 
case "home": include("home.html"); break; 
case "links": include("links.html"); break; 
case "test": include("test/test.html"); break; 
default: include("home.html"); break; 
}
?>

und die einzelnen Seiten dazu. Wenn ich das ganze ausführe, erhalte ich immer diese Meldung:

Notice: Undefined variable: section in F:\homepages\htdocs\spielwiese\index.php on line 3

Ist eigendlich ja logisch, ich rufe ja die index.php auf und da wird an der URL nichts angehängt. Nehme ich die Zeile error_reporting(E_ALL); raus, geht es. Sollte ich generell diese Zeile rausnehmen, oder doch nicht. Geschrieben wird ja immer, das man diese Zeile ruhig mit einbauen soll um eventuelle Fehler zu erkennen.

Muß ich bei switch($section){ noch was definieren?

PS.: Seid bitte nicht zu streng, ich bin noch ziehmlich "grün hinter den Ohren" in Sachen PHP...


Mfg Kalle
 
Also dein Script funktioniert theoretisch so wie es sollte, da dadurch das du nichts an die URL angehängt hast die Variable nicht initialisiert ist.
Du hast mehrere Möglichkeiten das abzufangen, die erste wäre eine weiterleitung zu basteln die Dir direkt an deine index die Variable mit dem Inhalt home anfügt.
oder du prüfst mittels isset ob die Variable existiert, wenn Sie das tut, machst du nichts, und wenn nicht dann setzt du sie einfach selbst und füllst Sie mit dem wert "home"
 
Das Problem ist, das du die Section Variable erst gar nicht abfängst..
So würde es funktionieren:

PHP:
<?php    
    if(isset($_GET['section'])) {
        switch($_GET['section']) {
            case "news":
                include "news/news.php";
                break;

            case "haftung":
                include "haftung/haftung.php";
                break;
			
            default:
                include "main.php";
                break;
        }     
    } else {
        include "main.php";
    }
?>

Hier wird erst geguckt, ist eine Section Variable gesetzt, dann führe die switch-Anweisung durch, ist sie nicht gesetzt, dann lade die main.php.

Falls du weitere Fragen hast, helf ich dir gern.
 
Zuletzt bearbeitet:
Hi,

super Beispiel, werd das nun erst mal ausprobieren.
Falls ich nicht zurecht komme, meld ich mich einfach nochmal...

Gruss Kalle
 
Zum Thema Error-Reporting: Während der Erstellens einer Website empfiehlt es sich, E_ALL zu verwenden – wenn sie dann allerdings einmal läuft und der breiten Öffentlichkeit zugänglich ist, solltest du das aus Sicherheitsgründen wieder rausnehmen.
 
Zurück