dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Häufig benötigte Codeschnipsel

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

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

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";
 
$database = "demo_db";
$table    = "counter";
 
// Die per GET übergebene URL einlesen
// In der Praxis wird hier geprüft, ob die URL überhaupt ok ist.
$url = $_GET['url'];
 
// Verbindung zum MySQL-Server aufbauen
$db = mysql_connect( $host, $user, $pass );
if ( !is_resource( $db ) ) {
    // handleSqlError() steht symbolisch für die Fehlerbehandlung.
    handleSqlError();
}
 
// Datenbank auswählen
if ( !mysql_select_db( $database, $db ) ) {
    handleSqlError();
}
 
// URL für den Transport zur Datenbank maskieren
$safe_url = "'" . mysql_real_escape_string( $url ) . "'";
 
// Eintrag fuer die übergebene URL um 1 erhöhen.
$query = "UPDATE $table SET count=count+1 WHERE url=$safe_url" 
$result = mysql_query( $query, $db ) || handleSqlError();
 
// Noch kein Eintrag für die URL vorhanden?
if ( mysql_affected_rows( $db ) == 0 ) {
    $query = "INSERT INTO $table (url, count) VALUES ($safe_url, 1)";
    mysql_query( $query, $db ) || handleSqlError();
}
 
// Auf übergebene URL weiterleiten
header( "Location: " . $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.

Wie kann ich zählen, wie oft auf einen Link geklickt wurde?
http://www.php-faq.de/q-code-klick-zaehler.html
 

dclp FAQ


Login