Event Bild - Array Hilfe

my-azur

Mitglied
Hallo,
ich habe folgendes Script:
PHP:
<?php
$folder = "design/event/hori/";
$images = array(
'default'=>'no.png',

'24.12.'=>'wh.png',
'25.12.'=>'wh.png',
'26.12.'=>'wh.png',

'27.12.'=>'winter.png',
'28.12.'=>'winter.png',
//..

'31.12.'=>'silvester.png',
'01.01.'=>'neujahr.png',

'02.01.'=>'winter.png',
'03.01.'=>'winter.png',
// ...

'06.04.'=>'ostern.png',
'07.04.'=>'ostern.png',
'08.04.'=>'ostern.png',
'09.04.'=>'ostern.png',

'26.06.'=>'ferien_nrw.png',
'27.06.'=>'ferien_nrw.png',
// ...

'21.07.'=>'sommer.png',
// ...
);

$now = date('d.m.');
if(isset($_GET['d']))
{
   $now = $_GET['d'];
}
$img = isset($images[$now]) ? $images[$now] : $images['default'];
echo "<img src=\"".$folder.$img."\" alt=\"$img\" class=\"cont_img\"/>";
echo '<br/>';
?>
Es gibt eben das Bild aus was mit Passendem Datum im Array steht.
Aber wenn ich jetzt ein Bild (z.B. Sommer.png) über eine längere Zeit anzeigen möchte, müsste ich x Array Einträge machen, eben für jeden Tag.

Hat jemand ne idee wie ich dem Script sagen könnte das er von-bis ein Bild anzeigen soll?

Mfg
 
Ich würde das Array zweidmensional machen. Für jeden Eintrag 3 Untereinträge. Bildadresse, Startdatum und Enddatum. Die dann gleich im YYYYMMDD-Format, damit man sie besser sortieren kann.
Ungefähr so:
Code:
Array
  |
   ` Bild
     |
      ` Startdatum
      ` Enddatum
      ` Pfad
  |
   ` nächstes Bild
 ....

Das Teil erstellst du dann so (das Standartbild zuerst, hat dann den Index 0 und man kanns leichter aufrufen)
PHP:
<?php
$images = array(
   // beim Startbild keine Zeit, auch kein weiteres Array im Array
   'default.jpg'
   // ansonsten Startzeit, Endzeit, Pfad
   array(20070101, 20070131, 'Winter.jpg'),
   array(...

Und das ganze dann etwa so implementieren (ist jetzt nur schnell hingeschrieben)
PHP:
<?php
$now = date('Ydm');
// rausfinden was gerade aktuell ist
// dazu das ganze Array durchlaufen und abbrechen, sobald das richtige Bild gefunden ist.
for($i=0; $i++; $i < count($images)) {
        if($now > $images[$i][0] AND $now < $images[$i][1]) {
             $path = $images[$i][2]; break;
        }
}
// falls nichts passendes da ist und $path leer bleibt, Startbild einsetzen
if(!isset($path)) $path = $images[0];


stebbi
 
Hi,
danke für die ausführliche Hilfestellung, werde es mal ausprobieren.

Mfg

// Edit

So funktionierts, Danke

PHP:
<?php

$folder = "design/event/hori/";
//$folder = "design/event/verti/";

$images = array(
   // beim Startbild keine Zeit, auch kein weiteres Array im Array
   'no.png',
   // ansonsten Startzeit, Endzeit, Pfad
   // Datum Format JAHR MONAT TAG
   array(20070101, 20070131, 'winter.png'),
   array(20070201, 20070231, 'sommer.png'),
   array(20070406, 20070409, 'ostern.png'),
   array(20070626, 20070808, 'ferien_nrw.png'),
   array(20070721, 20070808, 'sommer.png')
   );

$now = date('Ymd');

// um das Datum selbst zum Test über die URL zu verändern
if(isset($_GET['d']))
{
   $now = $_GET['d'];
}

// rausfinden was gerade aktuell ist
// dazu das ganze Array durchlaufen und abbrechen, sobald das richtige Bild gefunden ist.
for($i=0; $i < count($images); $i++) {
        if($now >= $images[$i][0] AND $now <= $images[$i][1]) {
             $path = $images[$i][2]; break;
        }
}
// falls nichts passendes da ist und $path leer bleibt, Startbild einsetzen
if(!isset($path)) $path = $images[0];

echo "<img src=\"".$folder.$path."\" alt=\"$img\" class=\"cont_img\"/>";
echo '<br/>';
?>
 
Zuletzt bearbeitet:
Zurück