Bannerrotation mit Klickzähler

Hallo,
Wir erstellen heute ein Script,das Banner rotieren lässt und views und klicks zählt, schwer? Nein,wir brauchen nur eine kleine MySQL-DB:
Name der DB "rotation"
das erste Feld ist:
id int(11) not null und soll auto_increment sein außerdem ist sie der PRIMARY KEY
das zweite Feld ist:
file varchar(64)
das dritte Feld ist:
url auch varchar(255)
das vierte Feld ist:
views INT(11)
das fünfte Feld ist:
clicks INT(11)
So,das wars ich habe diesmal beabsichtigt den Code nicht gleich hingeschrieben,damit ihr mal ein bisschen nachdenkt und euch die MySQL-Werte noch ein bisschen mehr einprägt. Wenn es große Probleme bereitet, poste ich ihn noch nach ;).
So die Tabelle hätten wir.
So jetzt brauchen wir noch eine .txt-File, die wir banner.txt nennen.
In ihr werden später die zuletzt angezeigten Banners gespeichert, so das wir nicht fünf mal hintereinander den gleichen Banner haben :)).
So jetzt erstmal das ganze Script:


<?php

$count_file = "banner.txt";
$fpc = fopen($count_file,"r"); flock($fpc, LOCK_SH);
$altes = fgets($fpc,1000);
flock($fpc, LOCK_UN); fclose($fpc);
$db = mysql_connect("hostname","user","passwort") OR DIE (" ");
mysql_select_db("datenbank1",$db) OR DIE (" ");
$alle_banner=array();
$banner = mysql_query("SELECT id FROM rotation WHERE file != '' AND url != '' ORDER BY id ASC");
while($banner_da = mysql_fetch_row($banner)) {
$alle_banner[]=$banner_da[0];
}
$gr_a = sizeof($alle_banner);
for($s_id=0;$s_id<$gr_a;$s_id++) {
if($alle_banner[$s_id]==$altes) {
$letzte_id = $alle_banner[$s_id];
$letzter_index=$s_id;
}
}
if($letzter_index >= ($gr_a-1)) {
$next_index = 0;
} else {
$next_index = $letzter_index+1;
}
$next_bild=$alle_banner[$next_index];

$fpc = fopen($count_file,"w"); flock($fpc, LOCK_EX);
fwrite($fpc,$next_bild);
flock($fpc, LOCK_UN); fclose($fpc);
$zeige_banner = mysql_query("SELECT * FROM rotation WHERE id = '$next_bild'");
$banner_data = mysql_fetch_row($zeige_banner);

echo "<a href="gotobanner.php?goto=$banner_data[0]" target="_blank">
<img src="werbung/$banner_data[1]" border="0" width="468" height="60" alt="$banner_data[2]"></a>";
$banner_views = $banner_data[3] + 1;
mysql_query("UPDATE rotation SET views = '$banner_views' WHERE file = '$banner_data[1]'") OR DIE("Fehler beim schreiben in der Datenbank");

?>


ganz oben wird als erstes mal die datei banner.txt ausgelesen.
Dann werden alles ids ausgelesen, wo ein Banner und ein Link vorhanden sind und dann abgegeben ins array $alle_banner weitergegeben
So ganz unten wird geprüft ob die Bannerid,die z.Z. offen ist die letzte ist,dann wird auf 1 zurückgesetzt oder, ob es nicht die letzte ist,dann wird um eins erhöht zum nächsten Banner.
Danach wird der Banner angezeigt und ganz unten erhöhen wir die views :).
Dann ist es fast fertig wir brauchen noch das Script,welches die zum Bannerlink umleitet und den klick zählt(gotobanner.php):


<?php

// Dantenbank connectieren
$db = mysql_connect("hostname","user","passwort") OR DIE (" ");
mysql_select_db("datenbank1",$db) OR DIE (" ");

// Bannerdaten auslesen
$zeige_banner = mysql_query("SELECT * FROM rotation WHERE id = '$goto'");
$banner_data = mysql_fetch_row($zeige_banner);

// Klicks incrementieren und zurückschreiben
$banner_clicks = $banner_data[4] + 1;
mysql_query("UPDATE rotation SET clicks = '$banner_clicks' WHERE id = '$goto'") OR DIE("Fehler beim schreiben in der Datenbank");

// Besucher umleiten
header("Location: $banner_data[2]");

?>


So das wars, und jetzt,wenn ihr wirklich bis hier unten gelesen habt kriegt ihr auch den MySQL-Code:
CREATE TABLE rotation (
id INT(11) NOT NULL AUTO_INCREMENT,
file VARCHAR(64),
url VARCHAR(255),
views INT(11),
clicks INT(11),
PRIMARY KEY (id)
);

Kommentare