php, codeschnipsel, php beispielen
[Code] Counter mit MySQL

Navigation
Home
Fachbücher
Support Forum
Webmaster News
Script Newsletter
Kontakt
Script Installation
Php
Php Tutorials
Impressum

Userbereich
kostenlos Anmelden
Memberliste

Script Datenbank
Script Archiv
Script Top 20
Screenshots
Testberichte

Suche

 
Script Seite

Unsere Php Scripts
Counter Script
Umfrage Script
Bilder Upload Script
Terminverwaltung
Simple PHP Forum
RSS Grabber

Script Mods
phpBB Adsense Mode

Tools und Generatoren
.htpasswd Generator
md5 Generator
base64 Generator
ICQ Generator
Colorpicker
Unix timestamp Tool
TLD Liste
Webkatalog Verzeichnis

Partner
Sprüche Treff

Net-publics.de
Net-publics hostet im modernen Rechenzentrum bei L...

Hosteurope.de
Bei den Anbieter bekommen sie Domains, Webspace, W...

weitere Anbieter
PHP Space Community auf Facebook PHP Space Community auf Twitter RSS Feeds der PHP Space Community

 

Statistik
8 Gäste Online
0 Member Online
497 Besucher heute
1825 Besucher gestern
 

[Code] Counter mit MySQL

Sie befinden sich: Home > Webmaster News

[Code] Counter mit MySQL

Im Folgenden wollen wir uns einen eigenen Counter für unsere Webseiten programmieren, der den Zählerstand in einer MySQL-Tabelle verwaltet.

Diese Tabelle müssen wir zunächst erzeugen:

Quelltext: PHP
1

CREATE TABLE `counter` (
`id` INT NOT NULL AUTO_INCREMENT ,
`ipadresse` varchar(15) NOT NULL ,
`letzter_besuch` int(10) unsigned NOT NULL ,
PRIMARY KEY `id` )
TYPE MYISAM ;

INSERT INTO `counter` `ipadresse` `letzter_besuch` )
VALUES ('zaehlerstand', '0');

Wie Sie sehen, haben wir sofort auch eine Zeile erzeugt, in der der Zählerstand gespeichert wird. Wir nutzen hier die Tatsache, dass wir einen varchar-Key und einen numerischen Wert brauchen und beides in dieser Struktur vorfinden. Als 'IP-Adresse' speichern wir das Wort 'zaehlerstand' und als Anfangswert für den Zählerstand den Wert 0. Dies spart uns eine weitere Tabelle, in der nur eine einzige Zeile verwaltet würde.

In dieser Hilfsdatei legen wir die Zugangsdaten für die Datenbank fest und zugleich eine Variable für die Zeitangabe einer Reloadsperre.

Quelltext: PHP
1

<?php
// connect.php

$cfg array();

$cfg['zeitsperre'4;

$cfg['host']='localhost';
$cfg['datenbank']='datenbankname';
$cfg['login']='username';
$cfg['passwort']='...passwort...';

$conn=mysql_connect($cfg['host'],$cfg['login'],$cfg['passwort']);
$db=mysql_select_db($cfg['datenbank']);
?>

Im folgenden gehen wir davon aus, dass connect.php schon per include-Anweisung ausgeführt wurde, es eine Verbindung zur datenbank gibt, und die $cfg[]-Variablen existieren.

Hier nun der erste Entwurf eines Counters, noch Ohne Reloadsperre:

Quelltext: PHP
1

<?php
// Zaehlerstand um erhöhen

$sqlc "UPDATE counter SET letzter_besuch letzter_besuch+1 WHERE ipadresse='zaehlerstand'";
mysql_query($sqlcOR die(mysql_error());

$sqlc "SELECT letzter_besuch FROM counter WHERE ipadresse='zaehlerstand'";
$ergc mysql_query($sqlc);
$rowc mysql_fetch_assoc($ergc);

echo 
'Anzahl Besucher bisher '.$row['letzter_besuch'];
?>
Wenn wir diesen Code einbauen so stellen wir fest, dass mit jedem Aufruf der Seite der Zähler um 1 erhöht wird. Wir wollen nun aber noch erreichen, dass jeder besucher nur einmal gezählt wird. Diese Sperre soll nach Ablauf von 4 Minuten, also der in $cfg['zeitsperre'] gespeicherten Zahl wieder aufgehoben werden. Einen bestimmten User erkennen wir an seiner IP-Adresse. Wir speichern also die erkannte IP zusammen mit der Zeit in die Datenbank. Der Ablauf des Zählens verändert sich nun wie folgt: a) alle Zeilen aus der tabelle löschen, die älter sind als 4 Minuten b) Nachsehen, ob ein Eintrag zur ermittelten IP-Adresse vorliegt b1) Wenn nein: IP-Adresse mit aktuellem Zeitstempel speichern und Counter erhöhen b2) Wenn ja: nichts machen c) neuen Counter auslesen und anzeigen
Quelltext: PHP
1

<?php
// Ermitttle Zeit(jetzt) und Zeit(vor Minuten)
$jetzt time();
$alt $jetzt 60 $cfg['zeitsperre'];

// Alte Zeiten löschen
$sql "DELETE FROM counter WHERE ipadresse != 'zaehlerstand' AND letzter_besuch '$alt'";
mysql_query($sqlOR die(mysql_error());

// IP ermitteln
if ($_SERVER['HTTP_X_FORWARDED_FOR']) 
$realip $_SERVER['HTTP_X_FORWARDED_FOR']; 
else 
$realip $_SERVER['REMOTE_ADDR']; 
}

// Tabellenzeile zu IP suchen
$sql "SELECT letzter_besuch FROM counter WHERE ipadresse '$realip'";
$erg mysql_query($sql);
$row mysql_fetch_assoc($erg);
if(
mysql_num_rows($erg== 0// IP nicht gefunden
// $realip mit $jetzt eintragen
$ins "INSERT INTO counter (ipadresse,letzter_besuch) VALUES ('$realip',$jetzt)";
mysql_query($insOR die(mysql_error());
// Counter erhöhen
$sqlc "UPDATE counter SET letzter_besuch letzter_besuch+1 WHERE ipadresse='zaehlerstand'";
mysql_query($sqlcOR die(mysql_error());
}
// Aktuellen Counter lesen und anzeigen
$sqlc "SELECT letzter_besuch FROM counter WHERE ipadresse='zaehlerstand'";
$ergc mysql_query($sqlc);
$rowc mysql_fetch_assoc($ergc);

echo 
'Anzahl Besucher bisher '.$row['letzter_besuch'];
?>

(Quelle: Wolfgang ), Eingetragen am 30.07.2008


Kommentare (1)

Sven kommentierte am 31.12.2011 um 14:04 Uhr

hi, da ist ein kleiner fehler auf deiner seite! am ende des tutorials steht diese zeile: echo 'Anzahl Besucher bisher '.$row['letzter_besuch']; an dem row fehlt ein c, sonst wird immer die letzte gespeicherte Zeit ausgegeben. mit dem rowc funktioniert es wunderbar! vlg Sven

Schreib ein Kommentar

Name
Mail
Webseite
Kommentar



 
 
Webhosting Service | Board Features