de.comp.lang.php.* FAQ

25.8. Wie kann ich zählen, wie oft auf einen Link geklickt wurde?

Keywords: Link | Counter

Antwort von Martin Jansen

Dem Skript liegt folgende Struktur der MySQL-Tabelle zugrunde:

mysql> describe counter;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned |      | PRI | 0       | auto_increment |
| url   | char(255)        |      |     |         |                |
| count | int(11)          |      |     | 0       |                |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Das Feld url enthält die URL, die aufgerufen wird. Das Feld count enthält die Anzahl der Klicks auf url.

<?php

// Zugangsdaten fuer die Datenbank
// Diese sollten der Sicherheit halber
// in ein Verzeichnis außerhalb des
// Document-Root ausgelagert werden.

$host     =    "localhost";
$user     =    "user";
$pass     =    "demo_password";

$datab    =    "demo_db";
$table    =    "counter";

// Die per GET übergebene URL einlesen und datenbanksicher machen
$url = addslashes($_GET['url']);

// Verbindung zum MySQL-Server aufbauen
$db = @mysql_connect($host, $user, $pass);

if ($db) {
    if (@mysql_select_db($datab, $db)) {
        // Eintrag fuer die übergebene URL um 1 erhöhen.
        $query = "UPDATE $table SET count = count + 1 WHERE url = '$url'";
        $result = @mysql_query($query);

        // Noch kein Eintrag für die URL vorhanden?
        if (mysql_affected_rows() == 0) {
            $sql_insert = "INSERT INTO $table (url, count) VALUES ('$url', '1')";
            @mysql_query($sql_insert);
        }
    }
}

// Auf übergebene URL weiterleiten
Header("Location: " . $_GET['URL']);

?>

Anwendungsbeispiel:

<a href="count.php?url=http://www.martin-jansen.de">Link</a>

Als Parameter für die Datei count.php wird die URL übergeben, auf die weitergeleitet werden soll. In count.php wird nun der Datensatz in der Tabelle, der $url als Wert für das Feld url enthält um 1 erhöht und es wird auf die neue URL weitergeleitet.

Valid HTML 4.01! Valid CSS!

25.8. Wie kann ich zählen, wie oft auf einen Link geklickt wurde?
http://www.php-faq.de/q/q-code-klick-zaehler.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team