Zufallsbanner und URL synchron

Manche Foren nehmen eh kein *.php als Bild-Link an, also ist die Sache des Einbindens von Fall zu Fall unterschiedlich - als quasi unmachbar zu beschreiben.

mfg chmee
 
was ist hierdran falsch:

PHP:
<?php 
$banners = array(1,2,3);
$banners[] = '<a href="http://www.dshini.net/de/spage/f7d83831-1fc8-80c4-a94f-30d1e883fd9b" title="Dshini.net"><img src="http://www.dshini.net/de/simg/f7d83831-1fc8-80c4-a94f-30d1e883fd9b/e67a.png"/></a>'; 
$banners[] = '<a href="http://www.dshini.net/de/spage/7dcb969d-f641-d124-e56e-2518f078fe43" title="Dshini.net"><img src="http://www.dshini.net/de/simg/7dcb969d-f641-d124-e56e-2518f078fe43/c541.png"/></a>'; 
$banners[] = '<a href="http://www.dshini.net/de/spage/413f1a65-d98b-46e4-1561-9bfc74db33a3" title="Dshini.net"><img src="http://www.dshini.net/de/simg/413f1a65-d98b-46e4-1561-9bfc74db33a3/1223.png"/></a>'; 
  shuffle($banners); 
  $i=0;
  while($i<3)
  {
    echo '<br />'.$banners[0];
    array_push($banners,array_shift($banners));
    $i++;
  }

?>


möchte nur das ein zufallsbanner mit der dazugehörigen url kommt!
 
Zuletzt bearbeitet von einem Moderator:
Les bitte den kompletten Thread noch mal. Das funktioniert so nicht, wie du es dir vorstellst. Und du verstößt immer noch gegen die Netiquette.
 
Ok, was genau funktioniert daran nicht? Mal davon abgesehen, das es so richtiger wäre:

PHP:
<?php 
$banners[] = '<a href="http://www.dshini.net/de/spage/f7d83831-1fc8-80c4-a94f-30d1e883fd9b" title="Dshini.net"><img src="http://www.dshini.net/de/simg/f7d83831-1fc8-80c4-a94f-30d1e883fd9b/e67a.png"/></a>'; 
$banners[] = '<a href="http://www.dshini.net/de/spage/7dcb969d-f641-d124-e56e-2518f078fe43" title="Dshini.net"><img src="http://www.dshini.net/de/simg/7dcb969d-f641-d124-e56e-2518f078fe43/c541.png"/></a>'; 
$banners[] = '<a href="http://www.dshini.net/de/spage/413f1a65-d98b-46e4-1561-9bfc74db33a3" title="Dshini.net"><img src="http://www.dshini.net/de/simg/413f1a65-d98b-46e4-1561-9bfc74db33a3/1223.png"/></a>';
 
habs nun so und bin zufreiden:

PHP:
<?php $banner = rand ( 1 , 3 ) ;
If ($banner == 1) echo'<a href="http://www.dshini.net/de/spage/f7d83831-1fc8-80c4-a94f-30d1e883fd9b" title="Dshini.net" target="_blank"><img src="http://www.dshini.net/de/simg/f7d83831-1fc8-80c4-a94f-30d1e883fd9b/e67a.png"/></a>'; 
If ($banner == 2) echo'<a href="http://www.dshini.net/de/spage/7dcb969d-f641-d124-e56e-2518f078fe43" title="Dshini.net" target="_blank"><img src="http://www.dshini.net/de/simg/7dcb969d-f641-d124-e56e-2518f078fe43/c541.png"/></a>'; 
If ($banner == 3) echo'<a href="http://www.dshini.net/de/spage/413f1a65-d98b-46e4-1561-9bfc74db33a3" title="Dshini.net" target="_blank"><img src="http://www.dshini.net/de/simg/413f1a65-d98b-46e4-1561-9bfc74db33a3/1223.png"/></a>'; 

?>
 
Umständlich.. Warum einen Zähler einbauen, wenn Du per foreach() nach dem shuffle() auf alle Arrays zugreifen kannst.

PHP:
$banners = array();
$banners[] = '<a href="http://www.dshini.net/de/spage/f7d83831-1fc8-80c4-a94f-30d1e883fd9b" title="Dshini.net"><img src="http://www.dshini.net/de/simg/f7d83831-1fc8-80c4-a94f-30d1e883fd9b/e67a.png alt="""/></a>'; 
$banners[] = '<a href="http://www.dshini.net/de/spage/7dcb969d-f641-d124-e56e-2518f078fe43" title="Dshini.net"><img src="http://www.dshini.net/de/simg/7dcb969d-f641-d124-e56e-2518f078fe43/c541.png" alt=""/></a>'; 
$banners[] = '<a href="http://www.dshini.net/de/spage/413f1a65-d98b-46e4-1561-9bfc74db33a3" title="Dshini.net"><img src="http://www.dshini.net/de/simg/413f1a65-d98b-46e4-1561-9bfc74db33a3/1223.png" alt=""/></a>'; 
shuffle($banners); 

// Alle Banner ausgeben
foreach($banners as $banner) { echo '<br />'.$banner; }

// einen Banner ausgeben,
echo '<br />'.$banners[0];

Vielleicht solltest Du dazu einen neuen Thread öffnen, Threadtitel und Inhalt divergieren :D
mfg chmee
 
(1) ich bezog mich auf den ersten Codeschnippsel - Allein wegen der while-Schleife und des hin und her pushens/shiftens.

(2) Wenn Dir If-Abfragen gefallen, dann soll es so sein. Gefallen tut mir die Array-Geschichte mehr, weil man nicht ein ganzes if-Konstrukt schreiben muss und dann noch den Random-Wert ändern. In meinem Code fügst Du lediglich ein weiteres Arrayfeld hinzu und Feddich. -> Soviel länger ist mein Code nun auch nicht<- Aber wie gesagt, wenn es Dir so gefällt, dann darf es so bleiben.

Das Stichwort ist wohl eher "schöner Code"..

mfg chmee
 
Und das funktioniert, wenn du Benutzer (nicht Admin!) eines Forums bist, und in deiner Signatur einen "Zufallsbanner" einbinden willst? :eek:
Mit etwas Aufwand (und ein paar Einschränkungen) ist das schon umsetzbar. Beispiel:
PHP:
<?php
$banners = array(
  array('http://style.tutorials.de/v6/images/pro/23.02-320.png',
        'http://www.tutorials.de/forum/contests/355536-2d-3d-contest-mein-traumhaus-23-02-2010-22-03-2010-a.html'),
  array('http://style.tutorials.de/v6/images/pro/23.03-320.png',
        'http://www.tutorials.de/forum/news/356926-einladung-zum-xxl-workshop-day.html'),
);

$seed = crc32($_SERVER['HTTP_REFERER']);
srand($seed);
$id = rand(0, count($banners) - 1);
$banner = $banners[$id];

if ($_GET['do'] == 'img') {
  header('Location: ' . $banner[0]);
} else {
  header('Location: ' . $banner[1]);
}
?>
Einbindung dann über [img]http://example.com/signatur.php?do=img[/img]
Die Einschränkung ist halt, dass auf einer bestimmten Seite immer derselbe Banner angezeigt wird und sich dieser nicht mit jedem Aufruf ändert.

Grüße,
Matthias
 
Zurück