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

Bei "Include-Navigation" Seitentitel übertragen

Status
Für weitere Antworten geschlossen.

fiedel

Mitglied
Hallo Forumsmitglieder!

Ich habe eine Navigation erstellt, die durch Anhängen einer GET-Variable hinter der URL (zB. "seite.php?section=index") Inhalte eines Links includet.

Aufbau ist wie folgt:

config.php
PHP:
<?php

$dateien = array(); //Erstellt einen neuen Array $dateien
$dateien['index'] = "0.php"; 
$dateien['seite1'] = "1.php"; 
$dateien['seite2'] = "2.php"; 

?>

seite.php

PHP:
<?php
include('config.php');

if(isset($_GET['section']) AND isset($dateien[$_GET['section']]))
{
 //Ist eine $_GET Variable vorhanden wird PHP angewiesen 
 //zu prüfen ob die Datei existiert und diese dann zu laden
 
 if(!file_exists($dateien[$_GET['section']])) echo "Die Datei ist nicht vorhanden.";

 include $dateien[$_GET['section']]; 
}
else
{
 //Wenn keine Variable oder Definition vorhanden ist
 //lade die Fehlerseite bzw. die Indexseite
 include $dateien['index'];  
}
?>
Das funktioniert auch alles wie es soll: Seite (Demo)

Allerdings bleibt bei jeder Unterseite der Seitentitel "Seite" bestehen, da ich jedoch möchte, dass für jede Seite ein genauerer Seitenname davor angezeigt wird (z.B."Hauptseite - Seite" anstatt nur "Seite"), habe ich die Variable $title eingeführt:
PHP:
<title><?php echo $title; ?>Seite</title>

Doch nun endlich zur Frage:


Wie schaffe ich es für $title einen jeweiligen Wert/Namen zu übergeben, so dass sich der der Title bei Seite 1 in "Seite 1 - Seite" ändert.

So klappt es nicht:
Die Variable in die zu inkludierenden Datei schreiben:
PHP:
<?php 
//1.php
$title = "Seite 1 - ";
?>
LG
fiedel
 
mir würde dazu ein mehrdimensionales array einfallen

PHP:
$dateien = array(); //Erstellt einen neuen Array $dateien
$dateien['index'] = array();
$dateien['index']['file'] = "0.php";
$dateien['index']['title'] = "Index";
$dateien['seite1'] = array();
$dateien['seite1']['file'] = "1.php";
$dateien['seite1']['title'] = "Seite 1";
$dateien['seite2'] = array();
$dateien['seite2']['file'] = "2.php"; 
$dateien['seite2']['title'] = "Seite 2";

du musst dann nur noch dein script etwas umbauen

also z.B. statt include $dateien[$_GET['section']]; => include $dateien[$_GET['section']]['file'];

usw. eben
 
Danke für die Antwort!

Habs mal umgebaut, funktioniert jedoch nicht... wo könnte hier der Fehler liegen?
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title><?php echo $title; ?> Seite</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
     
   <h1>Navigation</h1>

   <ul>
    <li><a href="seite.php?section=index">Hauptseite</a></li> 
    <li><a href="seite.php?section=seite1">Seite 1</a></li> 
    <li><a href="seite.php?section=seite2">Seite 2</a></li>
   </ul> 

   <p>&nbsp;</p>

   <h1>Inhalt</h1>

<p>
<?php
//seite.php

include('config.php');

if(isset($_GET['section']) AND isset($dateien[$_GET['section']]))
{
 //Ist eine $_GET Variable vorhanden wird PHP angewiesen 
 //zu prüfen ob die Datei existiert und diese dann zu laden
 
 if(!file_exists($dateien[$_GET['section']]['file'])) echo "Die Datei ist nicht vorhanden.";

 include $dateien[$_GET['section']]['file'];
 
 $title = $dateien[$_GET['section']]['title']; 

}
else
{
 //Wenn keine Variable oder Definition vorhanden ist
 //lade die Fehlerseite bzw. die Indexseite
 include $dateien['index']['file'];
 
 $title = $dateien['index']['title']; 
}
?> 
</p>

  </body>
</html>
 
Klingt ja irgendwie logisch! ;)

Jetzt hat es auch funktioniert:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>
    <?php 
    include('config.php');
    
    if(isset($_GET['section']) AND isset($dateien[$_GET['section']])){
     $title = $dateien[$_GET['section']]['title']; 
    }
    else{
     $title = $dateien['index']['title']; 
    }
    
    echo $title; 
    ?>
    </title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
     
   <h1>Navigation</h1>

   <ul>
    <li><a href="seite.php?section=index">Hauptseite</a></li> 
    <li><a href="seite.php?section=seite1">Seite 1</a></li> 
    <li><a href="seite.php?section=seite2">Seite 2</a></li>
   </ul> 

   <p>&nbsp;</p>

   <h1>Inhalt</h1>

   <p>
   <?php

   if(isset($_GET['section']) AND isset($dateien[$_GET['section']])){
    //Ist eine $_GET Variable vorhanden wird PHP angewiesen 
    //zu prüfen ob die Datei existiert und diese dann zu laden
 
    if(!file_exists($dateien[$_GET['section']]['file'])) echo "Die Datei ist nicht vorhanden.";

    include $dateien[$_GET['section']]['file'];
 
    $title = $dateien[$_GET['section']]['title']; 

   }
   else {
    //Wenn keine Variable oder Definition vorhanden ist
    //lade die Fehlerseite bzw. die Indexseite
    include $dateien['index']['file'];
 
    $title = $dateien['index']['title']; 
   }
   ?> 
   </p>

  </body>
</html>

Danke dir, Asipak4You :-)
 
einen kleinen schönheitsfehler hast du immernoch.. im body abschnitt füllst du nochmal die variable $title.. das ist nicht mehr notwendig ;)

und das hier ist merkwürdig
PHP:
if(!file_exists($dateien[$_GET['section']]['file'])) echo "Die Datei ist nicht vorhanden.";

include $dateien[$_GET['section']]['file'];

du gibst dem besucher zwar aus das die datei nicht exitiert, wenn sie nicht existiert. du bindest sie aber dennoch danach ein.

bau dort lieber noch eine else anweisung ein
PHP:
if(!file_exists($dateien[$_GET['section']]['file'])) {
  echo "Die Datei ist nicht vorhanden.";
} else {
  include $dateien[$_GET['section']]['file'];
}

anstelle der textnachricht kannst du auch eine error-seite inkludieren
 
einen kleinen schönheitsfehler hast du immernoch.. im body abschnitt füllst du nochmal die variable $title.. das ist nicht mehr notwendig ;)
Uuups ^^

und das hier ist merkwürdig
PHP:
if(!file_exists($dateien[$_GET['section']]['file'])) echo "Die Datei ist nicht vorhanden.";

include $dateien[$_GET['section']]['file'];
du gibst dem besucher zwar aus das die datei nicht exitiert, wenn sie nicht existiert. du bindest sie aber dennoch danach ein.

bau dort lieber noch eine else anweisung ein
PHP:
if(!file_exists($dateien[$_GET['section']]['file'])) {
  echo "Die Datei ist nicht vorhanden.";
} else {
  include $dateien[$_GET['section']]['file'];
}
anstelle der textnachricht kannst du auch eine error-seite inkludieren
Dieser Teil funktioniert sowieso nicht, weil ich bei einer Fehleingabe (z.B. seite.php?section=seit) automatisch auf die Hauptseite gelange.
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben