• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datei erst nach Abfrage includen

Status
Für weitere Antworten geschlossen.

Mo3b

Mitglied
Hi,
ich bastle grade an einer Webseite wo jede einzelne Sete aus 3 Teilen zusammengesetzt ist. Eine Seite sind codemässig dann so aus:


<? include ("header.php"); ?>
Hier steht mein Inhalt....
<? include ("footer.php"); ?>


Nun sollen aber die Seiten auf verschiedenen Bereichen meiner Webseite eine andere header.php bekommen. Dies könnte ich ja im Code mit einer If-Abfrage machen. Was frag ich da aber jetzt am besten ab?

Vielleicht zum besseren Verständnis:

Auf der Eigangsseite hat man 2 Auswahlmöglichkeiten, und je nachdem welche man wählt kann man zwar den gleichen Inhalt sehen, aber mit unterschiedlichem Header.

Ist da wer kreativ und sagt mir was ich abfragen könnte ? :)

Mfg Mo3b
 
Ne $_GET abfrage??

Code:
http://www.domain.de?seite=1 (2, 3, 4, ...)

$header = $_GET['seite'];
if($header == '1') {
include 'bla.php';
}
elseif($header == '2') {
include 'blu.php';
}
...
 
hi.

ich würde des anderst herum machen.
du hast zwei verschiedene seiten die jeweils header und footer beinhalten und includierst in die jeweils den passenden inhalt.

Gruß KY
 
Meinst du die selbe seite mit verschiedenen Designs?

nene es doch einfach
header1.php
header2.php
footer1.php
footer2.php

Machs doch einfach mit nem Link (index.php?design=2)
PHP:
<?php
session_start()
if (!isset($_SESSION['design'])) {
	switch ($_GET['design']) {
		case 1: $_SESSION['design'] = 1; break;
		case 2: $_SESSION['design'] = 2; break;
		default: $_SESSION['design'] = 1; break;
	}
}
include ("header".$_SESSION['design'].".php");
?>
Hier steht mein Inhalt....
<? include ("footer".$_SESSION['design'].".php"); ?>
Meintest du das?
 
Vielleicht habe ich mich unsauber ausgedrückt ;)

Also nehmen wir die seite "startseite.php". Die sieht im Design 1 so aus:

<? include ("header1.php"); ?>
Hier steht mein Inhalt....
<? include ("footer.php"); ?>

Im Design 2 aber so:

<? include ("header2.php"); ?>
Hier steht mein Inhalt....
<? include ("footer.php"); ?>


Die erste eingebundene Datei hat sich also geändert.

@KY:

Naja ich hab so etwa 40 Seiten. Soll ich die alle doppelt erstellen? oO Selbst wenn ich das machen würde, sobald ich was ändere muss ich das bei der anderen Seite auch wieder machen.

@CGollhardt:

Kann gut sein, das das genau ist was ich suche. Ich schaue mir das heute abend an und schreibe dann mal obs so klappt.

Mfg Mo3b
 
Dann lass einfach die SESSION Variale beim Footer weg
PHP:
<? include ("footer.php"); ?>

Aber wie mein Vorposter schon gesagt hatte, schreibe lieber 2 Design Dateien in der du den Content dann includierst. Dann brauchste nur noch über HTML href="design1.php?seite=xy" bzw. href="design2.php?seite=xy" verlinken.
 
Hi,


Das sollte ein "anständiger" Server gar nicht parsen.
Gewöhne dir am besten short_open_tags ab. Das hat mittlerweile einen schlechten Stil unter Programmierern.

Gruß :)

Gut zu wissen. Habe mich jetzt erstmal schlau gegoogelt was short open Tags sind. Habe mir schon überlegt ob ich auf die Schreibweise wechsel, aber gut zu wissen. Fällt eigentlich dieses <?= $var ?> auch darunter?
 
Hi,
ja, eigentlich ist das nicht ganz "sauber". Verwende am besten echo oder auch print dafür - sieht m.M.n. auch ordentlicher aus, falls du dein Script mit anderen teilst.
Leider sind viele solcher Abkürzungen z.B. in PEAR nicht gestattet - eigentlich schade, denn viele sind wirklich praktisch.

Gruß :)
 
Ich mache es gott sei dank mit echo, frag aber bitte nicht wie^^

echo 'stringstring'."\n";
echo 'stringstring'."\n";

Zeile für Zeile total umständlich irgendwie...

Man könnte ja auch schreiben

echo 'stringstring
stringstring
';

aber das sieht ja richtig sch... und unübersichtlich aus.

Aber gut das ich mit <?= $var ?> rechtzeitig gewarnt wurde =)
 
Habs jetzt mit dem Vorschlag von rexini realisiert:

Ne $_GET abfrage??

Code:
http://www.domain.de?seite=1 (2, 3, 4, ...)

$header = $_GET['seite'];
if($header == '1') {
include 'bla.php';
}
elseif($header == '2') {
include 'blu.php';
}
...


Ich frage jetzt auf jeder Seite ab, was im link gestanden hat. Danach wird dann der Header ausgewählt.

Jetzt habe ich aber Probleme wenn in einer Seite ein Link steht. Dort darf ja kein fixes Design angegeben sein.

Ich hab das mal so gelöst:

Im header steht jeweils:

<?php
$link="?design=1";
?>

bzw:

<?php
$link="?design=2";
?>

Ein Link sieht dann so aus:

<a href="testseite.php<?php echo($link); ?>">

Kann ich das auch so lösen das ich das nicht in jedem Link schreiben muss? Also das eine Funktion jeden Link anpasst?

Mfg Mo3b
 
es reciht ein einziger header. require_once("head.php"); wie folgt:

PHP:
<?PHP
// html-kopf
$header = $lng['header'];
if(isset($script_name)) $header .= " (".$script_name.")";

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style_name_.css" type="text/css">

<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<META http-equiv="pragma" CONTENT="no-cache">
<meta name="DC.Title" content="<?=$dc_title?>">
<meta name="DC.Subject" content="<?=$dc_subject?>">
<meta name="keywords" content="<?=$keywords?>">
<meta NAME="robots" CONTENT="<?=$follw_index?>">
<script language="JavaScript" type="text/javascript" src="js/bibliothek.js"></script>
<script src="js/fader.js" language="javascript" type="text/javascript"></script>
<title><?=$header?></title>
</head>
<?
    $mtime = explode(" ",microtime());
    $starttime = $mtime[1] + $mtime[0];
// ende
?>
damit kannst du in deinen scripten einfach die paar variablen definieren und einen entsprechenden header senden. je script einfach anpassen.
 
Warum macht ihr es alle so kompliziert?

Die bisherigen Beschreibungen besagen doch, dass die Seiten verschiedene Header haben. Es gibt also vermutlich eine index.php mit diesem (oder ähnlichem) Inhalt:

PHP:
include("header.php");
include("content.php");
include("footer.php");
in der content.php wird dann wohl eine $_GET Abfrage gemacht um zu ermitteln welche Seite im Content eingebunden werden soll. Das einfachste ist es dann die gleiche Abfrage in der header.php zu machen.

Code:
<!doctype ...>
<html ...>
  <head> 
    <script> ...
    <meta> ....
    <title> ....
    <link> ....
  </head>
  <body>
>> $_GET Abfrage <<
In der $_GET Abfrage wird eben dann der entsprechende Header (z.B. header_news.php oder header_gaestebuch.php) geladen.

So hat man

1. einen kürzeren URL
2. weniger Quellcode
3. keine Probleme mit dem Zugriff auf $_SESSION (falls man sich damit nicht oder nicht gut auskennt)
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben