variablen includen

TMG

Mitglied
Hiho,

ich hab folgendes Problem:

Ich benutze ein klitzekleines Script (PHP) um Inhalte zu includen

Code:
<?
If (empty($_GET['show'])) $var_show = "welcome"; // Welcher Inhalt soll angezeigt werden, wenn nicht angegeben wurde, was gezeigt werden soll?
ElseIf (!empty($_GET['show'])) $var_show = $_GET['show']; // Ansonsten Inhalt zuweisen
If (!file_exists($var_show . ".php")) $var_show = "error"; // Sollte es diesen Inhalt nicht geben, Fehlerseite asgeben
If ($var_show == "index") $var_show = "welcome"; // Einen Bug vorbeugen
include ($var_show . ".php"); // Seite Einbinden
?>

Da dort aber nur die Inhalte eingefügt werden, ich aber zu den Inhalten jeweils nochmal Überschriften habe, möchte ich die auch inlcuden, ohne dafür nochmal ne extra Datei anlegen zu müssen und ohne eine Matrix dafür anzulegen. Ich würde es gern in die zu includende Datei als Variable schreiben und die dann an der Stelle includen, wo die hin soll :)

Also ich geben monetan als link ein: "www.domain.org/index.php?show=inhalt"
Was muss ich da machen?
Hier könnt ihr euch die Seite anschaun: http://www.raumforschung.org

Also da, wo der Inhalt ist (das beinhaltet momentan das gesamte Feld mit den Grafiken direkt um den Inhalt) ist der Code von oben.

Wäre super, wenn ihr mir da nen kleinen Rat geben würdet.

Vielen Dank

Grüße,
Christian Rosick

PS: Einen guten Rutsch und ein frohes neues Jahr wünsch ich euch :)
 
Nachdem du die Datei einbezogen hast, stehen dir alle dort deklarierten Variablen zur Verfügung. Wo liegt das Problem?
 
Ich sehe im Moment noch nicht, wo Du weitere Ausgaben machst. Es sieht so aus, als ob Deine gesamte Ausgabe in den Inhalts-PHPs stattfindet, oder hast Du irgendwo noch eigene Dateien für header und footer, die Du in der Inhaltsdatei einbindest?
Dann könnte das so aussehen:
welcome.php
PHP:
<?
$titel = "Herzlich Willkommen";
include "header.php";
?>
Dein Inhaltshtml
<?
include "footer.php";
?>
Über weitere Variablen ließe sich dann auch festlegen, ob zum Beispiel ein Button in der Navigation hervorgehoben werden soll.

Vielleicht hilft Dir ja auch folgendes:
Tutorial Navigation über die URL
Tutorial Templates

Zu dem zweiten Tutorial:
Wo "//Der Inhalt wird z.B. aus einer Datenbank geholt" (inklusive der Zeile darüber und der darunter), könntest Du den Inhalt mit [phpf]file[/phpf] aus einer Datei holen und zum Beispiel mit $titel = [phpf]array_shift[/phpf] die erste Zeile zum Titel machen und mit $inhalt = [phpf]implode[/phpf] den Rest zum Inhalt erklären.

Bedenke, dass es in Deinem Skript möglich ist, jede beliebige php-Datei auf Deinem Server einzubinden. Das birgt gewisse Sicherheitsrisiken. Daher wird in dem ersten Tutorial ein array erstellt.

In Deinem Skript kannst Du übrigends noch sinnvoll kürzen, wenn Du ElseIf (!empty...)) durch else ersetzt.

Gruß hpvw
 
Vielen Dank, hat mir sehr geholfen, aber:

Ich mache ein array, dort deklariere ich die Dateinamen und die dazugehörigen Aufrufe über die URL... (ich hoffe, du weißt, was ich meine) :)

Auf jeden Fall funktioniert das alles super. Allerdings möchte ich das am besten so haben, dass ich in der Inhaltsdatei selbst sage, dass die Varibale "$ueberschrift" den Wert "X" hat. X = die Überschrift die angezeigt werden soll.

Wenn ich dann den Inhalt X include also z.b. "index.php?show=inhalt"
dann soll er aus der datei "inhalt.php" die variable $ueberschrift auslesen und die an Die Stelle schreiben wo ich Sie hin haben will.

Hier, so soll das aussehen, das neue Layout:
http://www.raumforschung.org/layout_26.12.2004.jpg
Über dem Inhalt ist ja da noch eine Tafel und da soll die Überschrit rein.

Aber halt ohne, dass ich in der Inhaltsdatei die Grafiken angegen muss. In der inhalt.php soll halt nur der Text in formatierter Form stehen.

Und genau dabei brauche ich halt hilfe. Wenn ich das mit der Überschrift hinbekomme, bin ich mehr als glücklich :)

Vielen Dank

Grüße,
Christian Rosick
 
Ich versteh kein Wort.
Jetzt redest Du von Grafiken?
Ich denke, das kannst Du mit dem template-Tutorial und der Art des Dateneinlesens, was ich geschrieben habe, lösen.
Aber da ich noch nicht ganz verstanden habe, was Du willst, kann ich da auch falsch liegen.
Wie sieht denn jetzt Deine inhalt.php aus?
 
http://www.raumforschung.org/test.php

dort hab ich mal den code sichtbar gemacht, wo er hin soll...

die grafiken "könnten" etwas verschoben sein, das ist aber für die sache ansich irrelevant, da ich noch nicht fertig bin!

auf jeden fall steht wo du es siehst momentan der code.

bei der überschrift soll auch noch code hin, ich weiß aber nicht unbedingt wie ! :|

Verstehst du jetzt, was ich meine?
 
Ein Schritt mehr verstanden ;)
Soll denn in der einzubindenen Inhaltsdatei auch PHP-Code stehen oder nur html?
Wenn da nur html hin soll:
Mache am Anfang vor dem html:
PHP:
<?
  include('config.php'); 
  
  if(isset($_GET['show']) AND isset($inhalt[$_GET['show']])) { 
    if(!file_exists($inhalt[$_GET['show']])) {
      $datei = file( $inhalt['error'] ); 
    } else {
      $datei = file( $inhalt[$_GET['show']] ); 
    }
  } else { 
      $datei = file( $inhalt['error'] );
  }
  $ueberschrift = array_shift ($datei);
  $text = implode ("",$datei);
?>
Jetzt das html.
An der Stelle, wo &Uuml;berschrift steht schreibst Du:
PHP:
<? echo $ueberschrift; ?>
An der Stelle, wo jetzt Dein Code steht schreibst Du:
PHP:
<? echo $inhalt; ?>
Deine Inhaltsdatei sieht dann so aus (ich würde der Datei in diesem nicht die Endung php oder html geben, sondern .content oder ähnlich):
z.B. "seite1.content"
Code:
Hier in der ersten Zeile die Überschrift der aktuellen Seite
Ab der zweiten Zeile kommt der Inhalts html-Code
In der dritten weiterer Inhalt
usw.
bis es keinen Inhalt mehr für die Seite gibt.

Wenn Du im Inhalt selbst noch php ausführen willst, schreib noch mal.

Die Syntaxfehler schenk ich Dir :-(
 
hmm, also die überschrift wird ja schonmal ausgelesen, freut mich, dass das klappt.

Aber statt dem Inhalt steht da nur "array" als Ausgabe.
Schau es dir einfach mal selbst an http://raumforschung.org/test.php?show=home

Vieleicht ist meine config.php ja falsch, momentan sieht sie so aus:

PHP:
<?php 
//config.php 

$inhalt = array();
$inhalt['home'] = "test_content.php";
$inhalt['verein'] = "verein.php";
$inhalt['about'] = "verein/about.php"; 
?>

Der code am Anfang der Hauptdatei, sieht so aus, wie du ihn mir geschrieben hattest.
Die Ausgaben (echo) sind da, wo sie hinsollen, wie man ja unschwer erkennen kann.

Vieleicht ist ja meine Inhaltsdatei falsch geschrieben:

HTML:
 <p>Herzlich Willkommen<br>
  Wie Sie vielleicht mitbekommen haben, mussten wir unsere alte Seite aufgeben. Dies hatte in erster Linie finanzielle Gr&uuml;nde. Wir haben diese M&ouml;glichkeit jedoch genutzt, um unsere Seiten vor allem intuitiver, einfacher erreichbar und viel &uuml;bersichtlicher zu gestalten. Momentan fehlen noch einige Inhalte. Vor allem bei den Projekten. Das liegt daran, dass wir bei den alten Seiten hier und da ein paar unzusammenh&auml;ngende Texte online hatten. Da wir ja, wie oben schon gesagt, eine hohe Zug&auml;nglichkeit erreichen wollen, mussten wir die einzelnen Projektleiter dazu auffordern, neue Texte die einfach und verst&auml;ndlich dargestellt sind, zu schreiben. In den n&auml;chsten Tagen wird der Rest online kommen. Ein Forum ist auch schon online. Dort k&ouml;nnen sich dann alle, die Interesse an uns haben, austoben und uns in intensive und sehr interessante Gespr&auml;che verwickeln. </p>
<p align="justify">Wir hoffen, dass Sie weiterhin das Interesse an uns behalten werden. Sollten Sie noch Fragen, Anregungen oder Fehler gefunden haben, scheuen Sie sich nicht, sich bei <a href="index.php?show=kontakt/kontakt">uns</a> zu melden.</p>
      <p align="justify">Wir w&uuml;nschen Ihnen ein frohes Fest, einen guten Rutsch und ein gl&uuml;ckliches neues Jahr 2005.</p>
      <p align="justify">PS: Nehmen Sie doch bitte an unserer <a href="http://www.raumforschung.org/forum/viewtopic.php?t=2" target="_blank">Umfrage</a> teil. <br>
          <a href="http://www.raumforschung.org/forum/viewtopic.php?t=2" target="_blank">http://www.raumforschung.org/forum/viewtopic.php?t=2 </a> </p>

Es ist bestimmt nur eine Kleinigkeit. Array_shoft heißt ja, dass ich kein Array machen muss, sondern dass der aus der gewünschten Datei die erste Zeile als array nimmt und das dan ausgibt, oder ?

Dankesehr

Grüße,
Christian
 
Uuuuups........
Sorry, da hab ich wohl was vergeigt.
Es heisst natürlich nicht echo $inhalt; sondern
PHP:
<? echo $text; ?>
an der Stelle, wo vorher Dein Code stand.
Da war es wohl schon zu spät.
Gruß hpvw
PS: Zu der array_shift Geschichte:
Die Datei wird mit file in ein Array eingelesen, jede Zeile ein Arrayelement.
Mit array_shift wird das erste Element (damit die erste Zeile) des Arrays aus dem Array entfernt und in $ueberschrift geschrieben.
Mit implode wird der Rest des Arrays (der Inhalt) in einen String umgewandelt.
 
Zuletzt bearbeitet:
Zurück