Grüß dich.
Ich habe eine Skript rumliegen, das ich mal für einen ähnlichen Zweck gebastelt habe. Dort schalte ich zwischen jeden Link und dem Ziel eine Seite dazwischen, die mir eine Datenbank aktualisiert und dann zum Zielverzeichnis weiterleitet. Hierfür musst du aber mysqli benutzen. Aber kurz gegooglet und ratzfatz hast du die Dateien. In der db_connect.php werden die Daten deiner Datenbank gespeichert. In der functions.php sind die Befehle definiert, die mysqli benutzt. Mal ganz grob gesagt.
Du kannst die Datenbank manuell oder per Skript erstellen. Manuell kann ich dir nicht helfen, weil ich deine Umgebung nicht kenne. Ich mache es gerne so:
[CODE]include(‚db_connect.php‘);
include(‚functions.php‘);
$queryCreateUsersTable = „CREATE TABLE IF NOT EXISTS downloads
(
id
int(11) unsigned NOT NULL auto_increment,
datei
TEXT NOT NULL default ‚‘,
aufrufe
int(255) NOT NULL default ‚0‘,
PRIMARY KEY (ID
)
)“;
if(!$mysqli->query($queryCreateUsersTable)){
echo „Table creation failed: (“ . $dbConnection->errno . ") " . $dbConnection->error;
}[/CODE]
Das Skript erstellt dir eine Tabelle. Die ID brauchst du, weil Datenbank. Das ist mir jetzt zu aufwendig. Die Spalte „Datei“ soll den Namen beinhalten, der einem Download zugewiesen wird. In „Aufrufe“ soll dann der Wert stehen, wie oft die Datei aufgerufen wurde. „int(255)“ und „Text“ waren von meinem Ursprungsskript übernommen. Habe mich jetzt nicht damit beschäftigt zu schauen, was hier am sinnvollsten ist.
Du hast jetzt eine Datenbank, in der du die Informationen speichern kannst. Für den Download musst du jetzt jedoch noch den Datensatz anlegen, den du dann bei jedem Download aktualisieren möchtest.
[CODE]// Einmal ausführen:
$sql = "INSERT INTO downloads (id, datei, aufrufe)
VALUES (‚‘ , ‚download‘, ‚0‘)";
if (mysqli_query($mysqli, $sql)) {
echo ‚lol‘;
} else {
echo „Fehler:
“ . $sql . „
“ . mysqli_error($mysqli);
}
mysqli_close($mysqli);[/CODE]
Das solltest du jedoch nur einmal pro Download durchführen. Jedesmal wenn dieses Skript ausgeführt wird, wird ein neuer Datensatz erstellt, der den Namen des Downloads in die Datei-Spalte schreibt. Das wird dann eklig.
Wenn das bis hierhin geklappt hat, hast du eine Datenbank, in der dein Download mit den Anzahlen der Aufrufe gespeichert werden kann. Zum jetzigen Zeitpunkt steht in der Datenbank dein Produkt namens „Download“ mit einer Aufruf-Anzahl von 0.
Nun kannst du einen Link erstellen. Der Link verläuft jetzt jedoch nicht zum Ziel, sondern auf eine neue php-Seite. In meinem Fall habe ich sie „zehler.php“ genannt. (neue Rechtschreibung)
<a href="zehler.php">Zum Download</a><br>
Die zehler.php ist nun wie folgt aufgebaut. Zunächst sucht sich das Skript in der Datenbank die Zeile raus in der die entsprechende Datei vermerkt ist:
[CODE]include(‚db_connect.php‘);
include(‚functions.php‘);
$sqlX = „SELECT * FROM downloads“;
$resultX = $mysqli->query($sqlX);
if ($resultX->num_rows > 0) {
while($rowX = $resultX->fetch_assoc()) {[/CODE]
Im prinzip seht da "Wähle aus der Tabelle Downloads alle zeilen. Noch funktioniert das, weil wir nur eine zeile haben. Wenn wir mehrere Zeilen drinnen hätten (also verschiedene Downloads) müsstest du bei dem Select * From downloads ein „Where datei = ‚download‘“ hinten dran hängen. Wäre wahrscheinlich sogar noch präziser…
Wie dem auch sei. Hier liest du die Anzahl der bisherigen Aufrufe aus (momentan noch 0). Dann soll er den Wert erhöhen.
$number = $rowX['aufrufe'] + 1;
Und das ganze wieder in der Datenbank abspeichern.
[CODE]$sql = "UPDATE downloads
SET
aufrufe = '$number'
WHERE datei = 'download'";
}}[/CODE]
Der 5-Zeiler aktualisiert dann die Datenabnk und sorgt dafür, dass in der Datenbank der Wert um eins hochspringt. Wenn alles richtig funktioniert, soll er dann automatisch zum Download weiterführen. Gibt es einen Fehler, soll er ihn uns melden.
Den Wert kannst du dir dann aus der Datenbank auslesen.
[CODE]$sql = „SELECT * FROM downloads WHERE datei = ‚download‘“;
$result = $mysqli->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$number = $row[‚aufrufe‘];[/CODE]
Du musst der Datenbank dann einfach sagen, dass du aus der Tabelle „downloads“ aus der zeile, in der die „datei = download“ vermerkt ist, die Aufrufe ($number = $row[‚aufrufe‘] auslesen und ausgeben möchtest.
Das Skript ist jetzt wahrscheinlich nicht die Krönung der Programmierkunst, aber es funktioniert. 1-2 Sachen sollten dann noch verfeinert werden, wenn es beispielsweise mehrere Downloads gibt. Aber für einen einzelnen Download, klappt das für mich prima.
An sich ist es recht banal.
Lieben Gruß.