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

Seiten mit variablem Inhalt

tintentraum

Neues Mitglied
Hallo,

ich erstelle zum ersten Mal eine website und möchte alle meine Seiten auf einer basieren lassen, damit ich das Design nicht jedes Mal einzeln ändern muss. Ich habe schon herausgefunden, dass ich dafür wohl php brauche und kann auch mit php schon eine Textdatei auslesen. Jetzt verstehe ich nicht, wie ich es anstelle, dass sich alle Seiten auf eine Hauptseite beziehen. Kann mir jemand weiterhelfen?

Vielen Dank und liebe Grüße
 
So ungefähr sieht die index.php aus
PHP:
<?php
  $page = (isset($_GET['action'])) ? $_GET['action'] : "home";
 
  include ("header.php");
   
  include ("menu.php");
   
  switch ($page)
  {
  case "home":  include ("home.php"); break;
  case "kontakt":  include ("kontakt.php"); break;
  case "impressum": include ("impressum.php"); break;
  default:  include ("home.php"); break;
  }
   
  include ("footer.php");
?>
Und die passenden Links:
Code:
<a href="index.php?action=home">Home</a>
<a href="index.php?action=kontakt">Kontakt</a>
<a href="index.php?action=impressum">Impressum</a>
 
Es funktioniert super. Danke! Jetzt habe ich aber noch eine Frage. Die Seite ist zweisprachig. Wie mache ich es, dass die Links von französischen Seiten zu den französischen gehen und die Links der deutschen Seiten zu den deutschen?

LG
 
PHP:
<?php
  $page = (isset($_GET['action'])) ? $_GET['action'] : "home";
  $lang = (isset($_GET['lang'])) ? $_GET['lang'] : "de";
 
  if ($lang != "de" && $lang != "fr")
  $lang = "de";
   
  include ($lang . "/header.php");
   
  include ($lang . "/menu.php");
   
  switch ($page)
  {
  case "home":  include ($lang . "/home.php); break;
  case "kontakt":  include ($lang . "/kontakt.php"); break;
  case "impressum": include ($lang . "/impressum.php"); break;
  default:  include ($lang . "/home.php"); break;
  }
   
  include ($lang . "/footer.php");
?>
Die passenden Links
PHP:
<a href="index.php?action=home&lang=<?php echo $lang; ?>">Home</a>
<a href="index.php?action=kontakt&lang=<?php echo $lang; ?>">Kontakt</a>
<a href="index.php?action=impressum&lang=<?php echo $lang; ?>">Impressum</a>
Links zum Umschalten
PHP:
<a href="index.php?action=<?php echo $page; ?>&lang=de">Deutsch</a>
<a href="index.php?action=<?php echo $page; ?>&lang=fr">Französisch</a>
 
Das sagt mir leider alles nicht so viel. Ich bin wirklich absolute Anfängerin. Trotzdem Danke für den Code! Ich hab mit ein bisschen Hilfe mal etwas zusammen gebastelt. Nur zum Test, wie es mit der website funktionieren würde. Ich kann jetzt auch durch Klicken auf die Flaggen, die Sprache ändern. Allerdings muss ich immer zweimal Klicken. Ich glaube, beim ersten Mal ändert sich nur die url und danach eben erst die Sprache. Wie kann ich das ändern?

<html>
<head>

<?php
setcookie("lang", $_GET["lang"], 0);
print $_COOKIE["lang"];
?>

<link rel="stylesheet" type="text/css" href="sprache.css" />

<a href="testsprache.php?lang=de"><img id="img0" src="flaggen/deutsch.gif" alt="deutsch" /></a>
<a href="testsprache.php?lang=fr"><img id="img0" src="flaggen/französisch.gif" alt="französisch" /></a>

</head>

<body>

<?php
if ($_COOKIE["lang"]=="de") {
echo "<h1>Hallo</h1>";
}
elseif ($_COOKIE["lang"]=="fr") {
echo "<h1>Bonjour</h1>";
}
else {
$_COOKIE["lang"]="de";
echo "<h1>Hallo</h1>";
}
?>
</body>
</html>

Lg, Kathi
 
Auszug aus der Doku zu setcookie:
Sind die Cookies einmal gesetzt, können Sie beim nächsten Seitenaufruf anhand der $_COOKIE oder $HTTP_COOKIE_VARS Arrays auf diese zugreifen.
Daher an den Anfang:
PHP:
$lang = (isset($_COOKIE["lang"])) ? $_COOKIE["lang"] : "de";
Außerdem ist
PHP:
setcookie("lang", $_GET["lang"], 0);
sehr schlecht. Es ist nicht immer gesichert, dass $_GET['lang'] gesetzt ist. Auch hier ist eine Überprüfung mit isset erforderlich

Ein Tipp zur Fehlersuche:

Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Ich hab mir nochmal genau den Code angeschaut, den du mir davor gegeben hattest. Mir war nicht klar, dass ich meine Dateien dann in deheader und frheader umbenennen muss. Das ist doch so? Jetzt funktioniert es zumindest. Danke!
 
Wo muss ich denn dann mein stylesheet einbinden? Wenn ich da etwas ändere, ändert sich nichts an der Website. Aber mein Layout ist da. Man kann es nur nicht ändern.
 
Vielleicht mal die F5-Taste im Browser klicken. Wenn du etwas in der CSS änderst, sollte sich auch was im Layout ändern.

Ich sehe da aber gerade noch einen Fehler.
Der Teil mit dem setcookie muss ganz an den Anfang, also vor <html>
 
Mit F5 hats funktioniert. Danke! Ich hab das mit dem setcookie jetzt ganz heraus gelassen. Also ich hab das so gemacht, wie du mir als erstes geschrieben hattest. Jetzt funktioniert das auch alles perfekt. Vielen Dank!
 
Zurück
Oben