zisslaweng.de

 Home    CSS    PHP    HTML    JavaScript    Allgemein    Sitemap   exemption-filter

Vom Einfachen zum Aufwändigen

Sie 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:
$script_name_trim ist der Dateiname der Seite, befreit von allen "Anhängseln", und wird der Funktion hit_count($page) als Parameter übergeben. Im globalen Array $_SESSION wird jeweils eine boolsche Variable mit dem Namen "$page" angelegt. Das verhindert für diese Session eine mehrfache Zählung einer Seite.

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.


In den Tabellen z_hit und z_session wurde die Spalte stamp vom Typ timestamp neu eingefügt (19.1.11). Für die Funktion überflüssig, …aber frisst kein Brot ;-) Für die manuelle Kontrolle bei Entwicklung / Erprobung z.B. per phpMyAdmin aber hilfreich, weil "Mensch" lesbar.

Logo