Logo Logo
InfoHome Themen Projekte Links Software
Themen
JavaHamster
BlueJ
Java
HTML
XHTML
CSS
XML
Datenbanken
MySQL
Theoretische Informatik
PHP
Vorbereitungen
Registrierung
Login
Navigation
Übungen
WM-Tippspiel
Sprachreferenz
Kara
Lego-Roboter
Algorithmen

PHP-Navigation

Bei größeren PHP-Projekten ist es sinnvoll, nicht alles in eine Datei zu schreiben. Dabei geht schnell die Übersicht verloren. Es bietet sich vielmehr an, logisch zusammenhängende Teile einer Webseite in eigene Skriptdateien auszulagern. Die PHP-Funktion include ermöglicht es, verteilte Seitenelemente wieder zusammenzuführen.

In einem ersten Beispiel soll die navi-Datei lediglich das HTML-Grundgerüst sowie das Hauptmenü enthalten. Die eigentlichen Seiteninhalte (content), die in Abhängigkeit vom ausgewählten Hauptmenüeintrag angezeigt werden sollen, werden in eigene Dateien ausgelagert und innerhalb der Datei navi.php per include eingebunden.

GET-Methode 

Das Beispiel demonstriert ein weiteres wichtiges PHP-Konzept: Die Variablenübergabe nach der GET-Methode. Dabei werden an die URL eines Links einfach Paare von Variablenname und Wert angehängt. Syntaktisch sieht das folgendermaßen aus:

<a href="navi.php?page=2&sub=2">page2_2</a>

Das an die URL gehängte ? leitet die Variablenliste ein. Es wird jeweils ein Paar aus Variablenname/Wert notiert. Wie bei einer Zuweisung steht links der Variablenname und rechts der Wert. Sollen (wie hier) mehr als eine Variable übergeben werden, benutzt man das & als Trennzeichen. (Achtung: Um XHTML-konform zu bleiben, muss man statt & das Sonderzeichen &amp; verwenden!)

Klickt man nun auf solch einen modifizierten Link sollte man die angehängten Variablen auch in der Adressleiste des Browsers sehen.

Die per GET-Methode angehängten Werte landen im $_GET-Array. Genau wie das $_POST-Array ist das $_GET-Array eine von PHP zur Verfügung gestellte Variable ("superglobale Variable"). Der Zugriff auf eine übergebene Variable geht dann genauso wie im Falle der $_POST-Variablen. Man schreibt: $_GET['page'] bzw. $_GET['sub'].

switch-case-Anweisung 

Zu guter Letzt kommt hier das switch-case-Konstrukt zum Einsatz. Hierbei handelt es sich um eine Sprachkonstrukt, das eine mehrfach Fallunterscheidung anhand eines bestimmten Variablenwertes ermöglicht. Es ist oft einfacher zu handhaben, als die Verwendung von if...elseif...elseif...elseif...else. Eingeleitet wird das Konstrukt mit dem Schlüsselwort switch. Es folgt in runden Klammern die Variable, anhand derer die Fallunterscheidung durchgeführt werden soll. Dann folgt der Block, in den die verschiedenen Alternativen notiert werden.

Jede Alternative beginnt mit dem Schlüsselwort case. Es folgt ein bestimmter Wert und dann ein Doppelpunkt. Nach dem Doppelpunkt folgen eine oder mehrere Anweisungen, die ausgeführt werden soll, wenn die switch-Variable den für dieses Fall (case) festgelegten Wert hat. Abgeschlossen wird eine Alternative in der Regel mit einem break;. Diese Anweisung sorgt dafür, dass das switch-case-Konstrukt sofort verlassen wird und keine weiteren Alternativen mehr geprüft werden.

        case 2:
            include("page2.php");
            break;

Nun können beliebig viele weitere Alternativen aufgeführt werden. Abschließend kann man noch einen default-Fall angegeben, dessen Anweisungen ausgeführt werden, wenn keiner der explizit geprüften Fälle zutrifft.

content-Dateien

Die inkludierten Dateien benötigen natürlich kein HTML-Grundgerüst mehr. Dieses ist ja bereits in navi.php vorhanden. Es lassen sich in diesen Dateien also direkt HTML-Ausgaben machen

navi.php

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Navigation</title>
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
        <style type="text/css">
            body {font-family: Verdana; font-size: 0.8em;}
            #navi li a:link {color:#FFFFFF;}
            #navi li a:visited {color:#FFFFFF;}
            #navi {list-style-type:none; margin-left: 0;}
            #navi li {float: left; width: 15%; background-color:maroon; margin: 1px; text-align: center;}
            #navi a {display: block; text-decoration: none;}
            #content {clear: left;}
            a:link, a:visited {color: blue; text-decoration: none;}
        </style>
    </head>
 
    <body>
        <ul id="navi">
            <li><a href="navi.php?page=1">page1</a></li>
            <li><a href="navi.php?page=2">page2</a></li>
            <li><a href="navi.php?page=3">page3</a></li>
            <li><a href="navi.php?page=4">page4</a></li>
        </ul>
       
        <div id="content">
<?php
    switch($_GET['page']){
        case 2:
            include("page2.php");
            break;

        case 3:
            include("page3.php");
            break;

        case 4:
            include("page4.php");
            break;
           
        default:
            include("page1.php");
    }
?>
        </div>
    </body>

</html>

DEMO
 

» drucken: pdf | html

© 2004-2024 M. Blanke · Ursulaschule · Kleine Domsfreiheit 11-18 · 49074 Osnabrück