Vom Einfachen zum AufwändigenSie möchten eine Erfolgskontrolle über den Besuch Ihrer Seite. Die einfachste Möglichkeit ist ein Hit Counter. Jeder Abruf einer Seite wird gezählt. In dieser einfachen Version wird vorausgesetzt, dass die Namen der Dateien für die gesamte Webseite eindeutig sind. Folgender SQL Befehl erzeugt die Tabelle:CREATE TABLE `z_hit` ( `ord` int(11) NOT NULL auto_increment, `bez` char(20) default NULL, `jahr` smallint(6) default NULL, `hit` int(11) default '0', `stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`ord`), UNIQUE KEY `bez` (`bez`), KEY `jahr` (`jahr`) ) ENGINE=MyISAM ;Eine neue Klasse in der Datei z_hitdbclass.php5 class HitDbMapper extends BaseDbMapper { public function __construct (){ parent::__construct(); } public function hit_count ($page) { if (! isset($_SESSION[$page])) { $this->insert_Hit_Page($page, date("Y")); $_SESSION[$page] = true; } return; } private function insert_Hit_Page($page, $jahr){ $sql = " INSERT INTO z_hit (bez, jahr, hit) VALUES ('$page', '$jahr', 1) ON DUPLICATE KEY UPDATE jahr='$jahr', hit=hit+1"; $this->base_query($sql); } }In Verbindung mit der bereits bekannten Klasse BaseDbMapper und den Definitionen in z_globals.php5 ist dies ein Zähler in der einfachsten Variante. Folgender Aufruf sorgt für die Zählung eines Seitenabrufes: $hit = new HitDbMapper(); $hit->hit_count($script_name_trim); Vielleicht folgendes zu erwähnen: Die Zählung erfolgt in der Tabelle z_hit in der Spalte "bez" ebenfalls unter der Bezeichnung "$page". Bei der Erstellung der Tabelle wurde die Spalte Bezeichner "bez" als UNIQUE KEY definiert. Wie praktisch: In Insert_Hit_Page($page) erzeugt MySQL eine neue Zeile und setzt den Zähler "hit" = 1 oder, falls der Bezeichner bereits existiert = ON DUPLICATE KEY, incrementiert die Datenbank den Zähler. Im Sinne von „Erfolgskontrolle” wird ziemlich schnell klar, diese Lösung kann nicht befriedigen, so richtig viel kann man damit nicht machen. Deshalb auf den nächsten Seiten eine erweiterte Version. Vorher ist es aber notwendig, die Sessiondaten zu speichern. |
| |