[Gelöst] Hintergrundbild monatlich wechseln

Hallo zusammen,

ich bin mal wieder ein wenig am basteln und muß sagen je mehr man sich damit beschäftigt, desto besser kommt man damit klar. Nichts desto trotz bekomme ich leider noch nicht alles hin. Ich wollte in eine Webseite ein Script einbauen, welches automatisch jeden Monat das Hintergrundbild der Seite ändert. Folgenden Code habe ich benutzt:

[code]<?php

$hintergrund[0] = “_img/02.jpg”;
$hintergrund[1] = “_img/03.gif”;
$hintergrund[2] = “_img/04.jpg”;
$hintergrund[3] = “_img/05.gif”;
$hintergrund[4] = “_img/06.jpg”;
$hintergrund[5] = “_img/07.jpg”;
$hintergrund[6] = “_img/08.jpg”;
$hintergrund[7] = “_img/09.gif”;
$hintergrund[8] = “_img/10.gif”;
$hintergrund[9] = “_img/11.jpg”;
$hintergrund[10] = “_img/12.jpg”;
$hintergrund[11] = “_img/01.jpg”;

$monat = date(“M”);

if($monat <= Jan ) {
$index=0;
} elseif($monat <= Feb ) {
$index=1;
} elseif($monat <= Mar ) {
$index=2;
} elseif($monat <= Apr ) {
$index=3;
} elseif($monat <= May ) {
$index=4;
} elseif($monat <= June ) {
$index=5;
} elseif($monat <= July ) {
$index=6;
} elseif($monat <= Aug ) {
$index=7;
} elseif($monat <= Sept ) {
$index=8;
} elseif($monat <= Oct ) {
$index=9;
} elseif($monat <= Nov ) {
$index=10;
} else {
$index=11;
}

?>[/code]

Leider bleibt aber immer das gleiche Bild. Es wird nicht gewechselt. Kann den Fehler nicht finden ich vermute das ich irgendetwas falsch gemacht habe. Kann mir da jemand auf die Sprünge helfen woran das liegt das keine Automation stattfindet?

= ??? 

Ist dies das Komplette Script?

= ???

Ist dies das Komplette Script?

[quote=“ChaosRacer”]if($monat <= Jan ) {
$index=0;[/quote]
Wer Was ist Jan?

Welches Bild wird denn immer angezeigt?

Wäre es bei obigem Code nicht wesentlich kürzer und einfacher, man würde:
$hintergrund=’_img/’.date(‘m’).’.jpg’;
schreiben?!

Hallo,

@fishi: ja ich denke schon. Ich bin der Meinung das sich $index auf die eingeklammerte Zahl hinter $hintergrund bezieht oder habe ich da was falsch verstanden?

@chrisb: Jan = Januar laut Manual soll man das so angeben können oder?

@Mgier: es wird nur 10.gif angezeigt. obwohl jetzt eigentlich schon 11.jpg angezeigt werden sollte da wir ja jetzt November haben also Monat 11.

Ich habe so ein wenig die Vermutung das ich da wohl irgendwie Mist gecodet habe oder?

[quote=“ChaosRacer”]
Ich habe so ein wenig die Vermutung das ich da wohl irgendwie Mist gecodet habe oder?[/quote]
Entweder du benennst die Zahl index nach mist, oder du hast die Bilder nach mist den Zahlen zugeordnet. freggle’s Lösung ist wohl die kürzeste. Deine ist auch richtig, sofern kein wirrwarr drin ist, aber eben etwas umständlich :wink:

edit: Aber mach es auf deine Art, so das es funktioniert, so lernt man was.
ABER, tu dir was gutes, $index sollte von 1-12 gehen, die Bilder sollten auch von 1-12 Benannt sein, und das möglichst nachdem Schema 1 = Jänner, 2 = februar…12 = Dezember…

@Mgier: ok ich habe das ganze jetzt mal anders angeordnet. index habe ich jetzt mit 1-12 benannt und die entsprechenden Bilder auch in die richtige Reihenfolge gesetzt. Das richtige Bild wird mir nun auch angezeigt nur gibt es eine Möglichkeit zu testen ob nach einem Monat das nächste Bild gezeigt wird? Oder muß ich jetzt bis Dezember warten?

Ich muß zugeben der Code von freggle sieht bei weitem kürzer aus, allerdings obwohl der kürzer ist habe ich da ein Verständnisproblem. Das was ich habe verstehe ich einigermaßen aber diese Kurzform noch nicht wirklich.

Übergebe der date-Funktion als zweiten Parameter einen von dir bestimmten Timestamp (bspw. per strtotime).

Na dann lass dir das Ergebnis von seinem Code doch mal zu verschiedenen Daten (s.o.) ausgeben.

Die Kurzform ist doch ganz einfach.
$hintergrund beinhaltet den Pfad zur Datei, welcher dann nur noch entsprechend ausgegeben werden muss (z.B. als style-Attribut: style=“background-image:url(’<?php echo $hintergrund; ?>’);”).
Das date(‘m’) liefert dir den Monat in der schreibweise mit führender Null, also 01,02,…10,11,12

Hallo zusammen,

so, hier nochmal meine Lösung, damit die Nachwelt auch was davon hat:

<?php $monat = date("n"); //Monat als Zahl 1-12 //Adressen der Bilder $bild[1] = "Pfad zum Bild (z.B._img/01.jpg)"; ... $bild[12] = "Pfad zum Bild (_img/12.jpg)"; //Bildanzeige echo '<body background="'.$bild[$monat].'">'; ?>

Darauf gekommen und auch endlich verstanden habe ich das ganze über den folgenden Link:
http://www.homepage-faqs.de/index.php?site=php-banner-des-tages

Naja bin halt leider immer noch kein „PHP-Profi“. Trotzdem danke an alle die mich hier immer so super unterstützen und Hilfe anbieten. :hail:


Bei schön durchnummierten Bildern lässt sich das noch besser bewerkstelligen, wie gezeigt ^^
(Hinweis: in der date-Syntax steht [i]n[/i] für den Monat ohne führende Nullen, [i]m[/i] dagegen gibt diese mit zurück.)

Bei schön durchnummierten Bildern lässt sich das noch besser bewerkstelligen, wie gezeigt ^^
(Hinweis: in der date-Syntax steht n für den Monat ohne führende Nullen, m dagegen gibt diese mit zurück.)