5x bewertet

Include II

von Fischstäbchen  |  25.11.2007 um 22:49 h
PHP Grundlagen
Typ: PHP Grundlagen
Stufe:Mittel
Andere Variante: klick

Das folgende Tutorial erklärt zunächst das Includen. Includen hat den Vorteil, dass man z.B. beim Div-Layout nicht
immer die ganze Navigation 20x wiederholen muss, sondern sie einmal in einer Datei hat und lediglich die Inhalte
auf neue Seiten packt (zumindest im Sinne der Layout-Verwendung. Vereinfacht fügt man andere Dateien in einer Datei
ein).

Dazu sei gesagt, dass es verschiedene Wege gibt, zu includen, aber da es hier darum geht, später das "Style-Switch-Script" zu verwenden (was ich noch posten muss), erläutere ich nur die Methode, die die Verwendung des Scripts ermöglicht.

Zunächst benötigt man eine Datei include.txt mit folgendem Inhalt:



<?php
function get_param($param_name)
{
global 
$HTTP_POST_VARS;
global 
$HTTP_GET_VARS;

$param_value "";
if(isset(
$HTTP_POST_VARS[$param_name]))
$param_value $HTTP_POST_VARS[$param_name];
else if(isset(
$HTTP_GET_VARS[$param_name]))
$param_value $HTTP_GET_VARS[$param_name];
return 
$param_value;
}
$s get_param("s");
switch(
$s){

case 
"home":
include(
"home.php");
break;

case 
"imprint":
include(
"impressum.html");
break;

// Das ist die Datei die normal angezeigt wird
default:
include(
"home.php");
break;
}
?>




Der obere Teil ist bei bestimmten Servern nötig, bei anderen nicht. Alternativ kann man dies hier nutzen:



<?php

switch($s){

case 
"home":
include(
"home.php");
break;


default:
include(
"home.php");
break;
}
?>


(Also ein veränderter Anfang)

Darunter wird die
Variable festgelegt, die die Links bestimmt. Aber dazu später mehr.
Darunter wiederum wird "home.php" includet. Case gibt dabei an, wie die Datei später im Link benannt werden
muss, um sie aufzurufen. Sie muss nicht "home" heißen, dieser Name ist frei wählbar. Auch ich es möglich, verschiedene
Dateitypen zu includen, wie man darunter sehen kann. Dennoch ist es notwendig, einen Server zu besitzen, der php unterstützt, da man nur in php-Dateien includen kann, bei html ist das nicht möglich.
Als letztes steht dort die Datei, die angezeigt wird, wenn die gesuchte Datei nicht gefunden wird oder wenn man
einfach nur den Index aufruft.
Um zu includen sollte man alle Dateien in die include.txt eintragen, die man später aufrufen möchte.

Ist das nun geschehen, nimmt man sich die index-Datei des Layouts. Wenn es keine php-Datei ist, sollte man sie
<br>umwandeln. Ist das geschehen, gibt man beim Content/Inhalts-Bereich folgendes ein:



<?php include("include.txt"); ?>




So wird die include-Datei im Inhaltsbereich abgerufen.

Letztendlich stellt sich die Frage, wie man nun die einzelnen Links aufruft. Die Frage lässt sich folgendermaßen beantworten:


index.php?s=NAME DES INCLUDES


"s" entspricht der in der Includedatei ausgewählten Variable. Index.php ist die Index-Datei, in die includet wird
und der Name des Includes entspricht dem Namen, der unter "case" zu finden ist. Also z.B:


index.php?s=home
index.php?s=imprint


War das verständlich? Ansonsten bitte Fragen etc per PN an mich.



6 Kommentare




DiabolicHerz

Also muss man für jede Unterseite ein
case "home":
include("home.php");
break;
in die Includeseite machen? Find ich ganz schön umständlich...
am 21.02.2008 um 22:00 Uhr


Nekoji

So umständlich finde ich das garnicht.
Es ist immerhin sicher.
am 06.08.2008 um 11:22 Uhr


Huhu,
ich hab da mal eine Frage, darf man das vllt nicht verwenden, wenn man eine Session in einer PHP-Seite hat?
Denn ich möchte gerne den Affi-Manager von Alice verwenden, denn sie meinte eine Datei mit session_start() darf nicht per include in eine andere datei eingebunden werden. Bei mir kommt nämlich immer diese fehlermeldung:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/amw/www/index.php:8) in /users/amw/www/admin.php on line 2

Ich hoffe ihr könnt mir helfen.
Wäre schön, wenn ich eine PN bekommen könnte.
LG Katjana
am 25.10.2008 um 10:29 Uhr


pixelprinzessin

du musst beachten, dass vor session_start() nichts anderes steht, das muss ganz am anfang der datei stehen..
am 09.12.2008 um 23:01 Uhr


Lile

Bei mir funktioniert das leider ganz und gar nicht und was PHP angeht bin ich auch nicht von gestern, hab alles versucht aber den Fehler auch noch nicht entdeckt Smilie
am 03.03.2009 um 21:07 Uhr


Sadako

sagmal, kapier ich das nur nicht oder hast du da nen gewaltigen fehler drin?
du schreibst man kann html-datein nicht includen, aber im include-script ist doch schon eine includet, die impressum.html Oo
find den tut zwar soweit schön geschrieben aber es ist echt unständlich für jede textseite das
case "home":
include("home.php");
break;
nochmal zu includen, unnütze arbeit finde ich Oo
am 27.12.2009 um 15:02 Uhr