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

Problem mit der "else" Anweisung

Chrisburg

Neues Mitglied
Hallo zusammen,

ich habe eine php-Datei erstellt, die je nach Datum eine andere HTML-Seite laden soll.
Die Datumsabfrage funktioniert einwandfrei, allerdings wird mir immer auch die Datei, die ich nach "else" aufrufe, includiert (also die, welche nur alternativ erscheinen sollte, wenn die anderen nicht zutreffen), d.h. es kommen immer 2 Dateien.


Heute am 27.01.2012 zeigt es z.B. die Datei "start_2012_rathaus.html" und darunter auch die Datei "start_normal.html" an. Die "start_normal.html" sollte er aber nur anzeigen wenn das Datum auf keine der "if"-Zeilen zutrifft.

Wäre nettt wenn mir jemand sagen könnte was ich falsch mache.

Lieben Dank!

Chrisburg

hier ist mein Code:

HTML:
<?php
date_default_timezone_set('UTC');
$tag = date('j');
$monat = date('F');
$jahr = date('Y');
// echo $tag, $monat, $jahr;
// Feste Feiertage
if ($monat == "December" && $tag >= 1 && $tag <= 23) {include "startfiles/start_advent.html";}
if ($monat == "December" && $tag >= 24 && $tag <= 26) {include "startfiles/start_weihnacht.html";}
if ($monat == "December" && $tag >= 27 && $tag <= 31) {include "startfiles/start_silvester.html";}
if ($monat == "January" && $tag >= 1 && $tag <= 5) {include "startfiles/start_neujahr.html";}
if ($monat == "October" && $tag >= 1 && $tag <= 31) {include "startfiles/start_halloween.html";}
// MCV-Termine
if ($jahr == "2012" && $monat == "January" && $tag >= 16 && $tag <= 28) {include "startfiles/start_2012_rathaus.html";}
if ($jahr == "2012" && $monat == "January" && $tag >= 29 && $tag <= 31) {include "startfiles/start_2012_jugendl.html";}
if ($jahr == "2012" && $monat == "February" && $tag >= 1 && $tag <= 4) {include "startfiles/start_2012_jugendl.html";}
if ($jahr == "2012" && $monat == "February" && $tag >= 5 && $tag <= 11) {include "startfiles/start_2012_weiber.html";}
// Bewegliche Feiertage
if ($jahr == "2012" && $monat == "April" && $tag >= 7 && $tag <= 16) {include "startfiles/start_ostern.html";}
if ($jahr == "2012" && $monat == "April" && $tag >= 28 && $tag <= 31) {include "startfiles/start_ostern.html";}
if ($jahr == "2012" && $monat == "April" && $tag >= 1 && $tag <= 5) {include "startfiles/start_ostern.html";}
if ($jahr == "2012" && $monat == "April" && $tag >= 17 && $tag <= 26) {include "startfiles/start_ostern.html";}
// ansonsten normale Ausgabe
else {include "startfiles/start_normal.html";}
 
Deine Bedingungen werden nacheinander abgearbeitet, der else-Zweig ist die Alternativbedingung für die letzte Bedingung

PHP:
if ($jahr == "2012" && $monat == "April" && $tag >= 17 && $tag <= 26)

und wird solange abgearbeitet wie diese Bedingung hier nicht zutrifft.

Allerdings würde ich dir zu einer einfacheren Variante hierfür raten. Schau dir mal switch() an, damit ließe sich der Code deutlich kürzen und würde auch besser verarbeitet werden als momentan.
 
Ah ok,

vielen Dank!

War ein Denkfehler, dachte das else wäre dann die Alternative zu allen und nicht nur zum letzten if.

Den switch()-Befehl schau ich mir mal genauer an, habe es jetzt erst mal mit elseif gelöst.

Liebe Grüße

Chrisburg

<?php
date_default_timezone_set('UTC');
$tag = date('j');
$monat = date('F');
$jahr = date('Y');
// echo $tag, $monat, $jahr;
// Feste Feiertage
if ($monat == "December" && $tag >= 1 && $tag <= 23) {include "startfiles/start_advent.html";}
elseif ($monat == "December" && $tag >= 24 && $tag <= 26) {include "startfiles/start_weihnacht.html";}
elseif ($monat == "December" && $tag >= 27 && $tag <= 31) {include "startfiles/start_silvester.html";}
elseif ($monat == "January" && $tag >= 1 && $tag <= 5) {include "startfiles/start_neujahr.html";}
elseif ($monat == "October" && $tag >= 1 && $tag <= 31) {include "startfiles/start_halloween.html";}
// MCV-Termin
elseif ($jahr == "2012" && $monat == "January" && $tag >= 16 && $tag <= 28) {include "startfiles/start_2012_rathaus.html";}
elseif ($jahr == "2012" && $monat == "January" && $tag >= 29 && $tag <= 31) {include "startfiles/start_2012_jugendl.html";}
elseif ($jahr == "2012" && $monat == "February" && $tag >= 1 && $tag <= 4) {include "startfiles/start_2012_jugendl.html";}
elseif ($jahr == "2012" && $monat == "February" && $tag >= 5 && $tag <= 11) {include "startfiles/start_2012_weiber.html";}
// Bewegliche Feiertage
elseif ($jahr == "2012" && $monat == "April" && $tag >= 7 && $tag <= 16) {include "startfiles/start_ostern.html";}
elseif ($jahr == "2012" && $monat == "April" && $tag >= 28 && $tag <= 31) {include "startfiles/start_ostern.html";}
elseif ($jahr == "2012" && $monat == "April" && $tag >= 1 && $tag <= 5) {include "startfiles/start_ostern.html";}
elseif ($jahr == "2012" && $monat == "April" && $tag >= 17 && $tag <= 26) {include "startfiles/start_ostern.html";}
// ansonsten normale Ausgabe
else {include "startfiles/start_normal.html";}
?>
 
Zurück
Oben