Zur Navigation

Zufälliger Banner [3]

21 Rudy

Das sollte in etwa so gehen (ungetestet):

<?php
$banners = array(
  0 => array('img'=>'banner0.jpg', 'href'=>'http://banner0.com', 'alt'=>'banner0-alt', 'target'=>'_blank', 'class'=>'banner'),
  1 => array('img'=>'banner1.jpg', 'href'=>'http://banner1.com', 'alt'=>'banner1-alt', 'target'=>'_blank', 'class'=>'banner'),
  2 => array('img'=>'banner2.jpg', 'href'=>'http://banner2.com', 'alt'=>'banner2-alt', 'target'=>'_blank', 'class'=>'banner'),
  3 => array('img'=>'banner3.jpg', 'href'=>'http://banner3.com', 'alt'=>'banner3-alt', 'target'=>'_blank', 'class'=>'banner'),
  4 => array('img'=>'banner4.jpg', 'href'=>'http://banner4.com', 'alt'=>'banner4-alt', 'target'=>'_blank', 'class'=>'banner'),
  5 => array('img'=>'banner5.jpg', 'href'=>'http://banner5.com', 'alt'=>'banner5-alt', 'target'=>'_blank', 'class'=>'banner')
);

srand(time());
$banner = $banners[rand(0, count($banners) - 1)];

$bannercode = '<div id="banner"><a href="'.$banner['href'].'" target="<?=$banner['target']?>" class="<?=$banner['class']?>"><img src="'.$banner['img'].'" alt="'.$banner['alt'].'"></a></div>';
?>
.....

<?=$bannercode?>

Das mit dem Rahmen habe ich über eine CSS-Klasse für das a gelöst (die lautet z.Z. überall 'banner'), das Layout kannst Du dann über das Stylesheet bestimmen, z.B.
a.banner img { border:1px solid red; }

02.01.2008 19:16

22 Tilman

Kann man da uch Flashdateine einbinden?

03.01.2008 14:06

23 Rudy

dazu muss man es etwas abändern:

<?php
$banners = array(
 0 => array('img'=>'banner0.jpg', 'href'=>'http://banner0.com', 'alt'=>'banner0-alt', 'target'=>'_blank', 'class'=>'banner'),
 1 => array('img'=>'banner1.swf', 'href'=>'http://banner1.com', 'alt'=>'banner1-alt', 'target'=>'_blank', 'class'=>'banner'),
 2 => array('img'=>'banner2.jpg', 'href'=>'http://banner2.com', 'alt'=>'banner2-alt', 'target'=>'_blank', 'class'=>'banner'),
 3 => array('img'=>'banner3.jpg', 'href'=>'http://banner3.com', 'alt'=>'banner3-alt', 'target'=>'_blank', 'class'=>'banner'),
 4 => array('img'=>'banner4.jpg', 'href'=>'http://banner4.com', 'alt'=>'banner4-alt', 'target'=>'_blank', 'class'=>'banner'),
 5 => array('img'=>'banner5.jpg', 'href'=>'http://banner5.com', 'alt'=>'banner5-alt', 'target'=>'_blank', 'class'=>'banner')
);


mt_srand(time());
$banner = $banners[rand(0, count($banners) - 1)];

$bannercode = '<div id="banner"><a href="'.$banner['href'].'" target="'.$banner['target'].'" class="'.$banner['class'].'">';
if (strtolower(substr(strrchr($banner['img'], "."), 1)) != 'swf') {
  $bannercode .= '<img src="'.$banner['img'].'" alt="'.$banner['alt'].'">';
} else {
  $bannercode .= '<object type="application/x-shockwave-flash" data="'.$banner['img'].'" height="160" width="440"><param name="movie" value="'.$banner['img'].'" allowscriptaccess="never"></object>';
}
$bannercode .= '</a></div>';
?>
....
<?=$bannercode?>

03.01.2008 21:39

24 Tilman

Äh, ich habe da ein Problem festgestellt.
Bis jetzt habe ich es immer im Firefox ausprobiert. Letztes Mal habe ich aber mal mit dem Internet Explorer die Seite aufgerufen. Da kommt dann immer nur das erste Bild.

Gibt es da eine Lösung?

17.01.2008 17:35

25 Jörg

Und welchen Code hast du dabei verwendet?

Bei den PHP-Beispielen sollte es unerheblich sein, welcher Browser die Seite aufruft, da bereits auf dem Server eine Banner-Auswahl getroffen wird

17.01.2008 20:27

26 Tilman

Ich habe den Code benutzt:

<?php $banners = array( 0 => array('img'=>'banner0.jpg', 'href'=>'http://banner0.com', 'alt'=>'banner0-alt','target'=>'_blank', 'class'=>'banner'), 1 => array('img'=>'banner1.jpg', 'href'=>'http://banner1.com', 'alt'=>'banner1-alt', 'target'=>'_blank', 'class'=>'banner'), 2 => array('img'=>'banner2.jpg', 'href'=>'http://banner2.com', 'alt'=>'banner2-alt', 'target'=>'_blank', 'class'=>'banner'), 3 => array('img'=>'banner3.jpg', 'href'=>'http://banner3.com', 'alt'=>'banner3-alt', 'target'=>'_blank', 'class'=>'banner'), 4 => array('img'=>'banner4.jpg', 'href'=>'http://banner4.com', 'alt'=>'banner4-alt', 'target'=>'_blank', 'class'=>'banner'), 5 => array('img'=>'banner5.jpg', 'href'=>'http://banner5.com', 'alt'=>'banner5-alt', 'target'=>'_blank', 'class'=>'banner') ); srand(time()); $banner = $banners[rand(0, count($banners) - 1)]; $bannercode = '<div id="banner"><a href="'.$banner['href'].'" target="<?=$banner['target']?>" class="<?=$banner['class']?>"><img src="'.$banner['img'].'" alt="'.$banner['alt'].'"></a></div>'; ?> ..... <?=$bannercode?>

19.01.2008 16:30

27 Jörg

Hast du die Zeilenumbrüche in dem Code entfernt - oder kam das durch meine Forensoftware o_O

Dieser Abschnitt erzeugt eine Fehlermeldung:
$bannercode = '<div id="banner"><a href="'.$banner['href'].'" target="<?=$banner['target']?>" class="<?=$banner['class']?>"><img src="'.$banner['img'].'" alt="'.$banner['alt'].'"></a></div>';

Innerhalb von Strings von PHP in HTML wechseln, ist m.E. problematisch. Ich würde den String folgendermaßen zusammensetzen:
$bannercode = '<div id="banner"><a href="'.$banner['href'].'" target="' . $banner['target'] . '" class="' . $banner['class'] . '"><img src="'.$banner['img'].'" alt="'.$banner['alt'].'"></a></div>';

Abgesehen davon sind die Fehler aber browserunabhängig, da der PHP-Code auf dem Server ausgeführt wird, nicht im Browser. Wenn der IE die Seite immer mit demselben Bild anzeigt, holt er diese vielleicht aus dem Browser-Cache?

19.01.2008 19:00

28 Tilman

Nee, ich habe keine Zeilenumbrüche entfernt. Das liegt an deiner Forensoftware.
Den Code habe ich bereits abgeändert, so wie du es als zweiten Code geschrieben hast.

Soll ich in den Meta-Tag einstellen, dass die Seite immer neu geladen werden soll? - Ich probiers einfach ein Mal!

20.01.2008 12:00

29 Tilman

Ja, es funktioniert mit folgendem Meta-Tag:

<meta http-equiv="pragma" content="no-cache">

20.01.2008 12:29