Php

Bannerrotation (Php Tutorial)

Tutorial erstellt von Manuel, letzte Änderung am 04.07.2007

Code:
1  <?php
2   echo '<div align="center">';
3   $tipp = file("banner.txt");
4   srand ( (double) microtime()*10000000);
5   $eintraege = count($tipp)-1;
6   $zahl = rand(0,$eintraege);
7   $einzeln = explode("||", $tipp[$zahl]);
8   echo '<a href="'.$einzeln[0].'" target="blank"><img src="'.$einzeln[1].'"
    alt="Werbung" WIDTH="468" HEIGHT="60"></a>';
9   echo '</div>';
10 ?>



Eine Bannerrotation ist dazu da, bei jedem Aufruf der Seite einen anderen Banner einzubinden.
Da wir diese über einen Zufallswert steuern, kann es natürlich dazu kommen, dass ein Banner
mehrmals hintereinander angezeigt wird. Dies hängt natürlich von der Anzahl der in der Rotation
vorhandenen Banner ab.

Eine solche Bannerrotation kann man natürlich auch für andere Dinge verwenden. Will man zum Beispiel
immer einen zufälligen Text darstellen, um etwas mehr Dynamik auf der Seite zu erzeugen, ist diese
genauso gut zu gebrauchen.

Aber kommen wir zur Beschreibung des Quellcodes:

Zeile 2/9:
Der Banner wird in einen div-Container gelegt und somit mittig auf der Seite ausgerichtet. Das kann
natürlich jeder machen wie er will.

Zeile 3:
Der Inhalt der Datei "banner.txt" wird in der Variable $tipp als Array gespeichert. Der Befehl file ist demnach
dazu gut, eine Datei auszulesen. Jedes Feld des Arrays wird mit einer Zeile der Datei gefüllt. Die erste Zeile
wird demnach im Array an der Stelle 0 gespeichert. ($tipp[0])

Ein häufig gemachter Fehler:

Code:
file("test.txt");


Dieser Befehl macht so keinen Sinn, denn die Datei wird zwar ausgelesen, aber nirgends abgespeichert.
Somit geht der Inhalt direkt wieder verloren.

Zeile 4:
Die srand-Funktion erzeugt eine beliebige Zufallsvariable. microtime() gibt den aktuellen Unix Timestamp
mit Mikrosekunden zurück.
Und genau da ist der Trick. Wir legen den internen Startwert für den Zufallsgenerator über die Systemzeit
fest, da diese immer anders ist. Würden wir einen festen Startwert wählen, so würde dies immer wieder zur
gleichen Zufallssequenz führen.

Zeile 5:
Die Funktion count zählt nun die Anzahl der Einträge. -1, weil count die Anzahl wiedergibt. Ein Array
beginnt aber an der Stelle 0. Haben wir also 5 Einträge, so steht der letzte im Array an der Stelle 4.

Zeile 6:
Nun rufen wir die rand-Funktion auf. Diese erzeugt einen Zufallswert zwischen 0 und der Anzahl der Einträge.
Wichtig ist es, vor diesem Aufruf die srand-Funktion zu verwenden, da diese einen neuen Startwert festlegt.
Ansonsten erhält man bei jedem Durchlauf dieselbe Sequenz von Werten.

Zeile 7:
Der Eintrag im Array wird in 2 Felder in einem neuen Array aufgeteilt. Dies geschieht über die Funktion
explode. "||" ist die Stelle, an der das Array geteilt werden soll. Der 2te Wert gibt das zu teilende
Array an. In unserem Fall ist dies das Feld $tipp an der Stelle $zahl, welche einen Zufallswert enthält.
Somit rufen wir jedes Mal ein anderes Feld auf.

Zeile 8:
Diese Zeile gibt nun die beiden Felder aus. In $einzeln[0] haben wir die url der Seite gespeichert und
in $einzeln[1] die url des Banners.


Die Datei "banner.txt" muss also in diesem Beispiel wie folgt aussehen:

Code:
url_der_seite||url_des_banners

http://www.der-webdesigner.net||http://www.der-webdesigner.net/dw-banner.jpg


Wollt ihr also nun einen Banner zu eurer Rotation hinzufügen, müsst ihr lediglich diese Datei um eine Zeile
erweitern. Der Quellcode bleibt immer unverändert!



Ich hoffe meine ausführlichen Erklärungen waren verständlich genug. :)

Viel Spaß damit,
Manuel

>> Allgemeine Fragen oder Probleme mit dem Tutorial? Hier gehts zum Forum!

Impressum / Datenschutzerklärung          © der-Webdesigner.net 2002 - 2008           top ▲