zisslaweng.de

 Home    CSS    PHP    HTML    JavaScript    Allgemein    Sitemap   exemption-filter

Besucherzähler zisslaweng

Die Art der Speicherung der Besucherzahlen in der Datenbank hat einen Nachteil. Sozusagen ein „Designfehler“ ist die Speicherung unter den Bezeichnern "tag_1", "tag_2".... Da es ein String ist, lässt sich damit nicht die richtige Sortierung erzielen.
Die Tagesnummer allein ist ebenfalls unpraktisch, die gewünschte Sortierung ergibt sich erst in Verbindung mit der Spalte jahr. Es geht aber doch. Die DB Abfrage in der Datei z_hitdbclass.php5 unter Berücksichtigung dieser „Hindernisse“ Die (MySQL) Funktion round() macht aus der Tageszahl, die als String vorliegt, ein Integer.

public function get_all_hits() {
  $vj=date("Y")-1;
  $j=date("Y");
  $sql = "
  SELECT hit,
    round(substring(bez,5)) as num
  FROM 
    z_hit 
  WHERE 
    bez like 'tag_%'
    && (jahr = $vj || jahr = $j)
  ORDER BY jahr, num
  ";
  $result = $this->base_query($sql);
  $this->store_result();
  return $result;		
}

Für die Auswertung erst einmal ein bisschen Gefummel mit Datumsfunktionen um $kalender, ein Array of Array, mit den benötigten Daten in die richtige Reihung zu bringen. Mit den tatsächlichen Werten gefüllt wird es in einer Schleife.
Das geht recht schnell, da die Datenbank für Daten holen und sortieren nur einmal richtig gefordert wird, anschließend werden die Daten relativ schnell aus dem Puffer gelesen. Die Abfrage if ($a['num'] == ... berücksichtigt fehlende Tagesnummern, die aus irgendwelchen Gründen (zu wenig Traffic?) nicht durch zero_hit() bearbeitet wurden. Das macht Sinn, falls Ihre Tagesergebnisse noch nicht ein volles Jahr umfassen.

..und in Datei z_statistik_b.php5
$result = $hit->get_all_hits();
$num = $result->num_rows;
for ($i = $tage_auffuellen, $j = 0; $i <= $anz + $tage_auffuellen || 
                                    $j < $num; $i++, $start+=86400) {
  $kalender[$i] = array('Monat' => date("n",$start), 
               'Tag' => date("z", $start), 'Hit' => 0);
  if ($result->data_seek($j)) $a = $result->fetch_assoc();
  if ($a['num'] == $kalender[$i]['Tag']) {
    $kalender[$i]['Hit'] = (integer) $a['hit'];
    $j++;
  }
}

Danach erfolgt die Bilderzeugung. Das ganze in der Datei z_statistik_b.php5. Wie gesagt: betrachten Sie das ganze als eine Spielerei, eine Demo, man könnte....

Rechts ganz oben eine nummerische Ausgabe verschiedener Zähler. Die Routine statistik() wird bei jedem Seitenabruf durch hit_count() aufgerufen und stellt die Werte im Object $HIT zur Verfügung.

Statistik

19.02.19 17:30:56


Besucher: 15.680
Seitenabrufe: 347.319
Bes. online: 5, max: 52
Besucher:   2
gestern:     3
vorgestern: 1
SPAM count: 5469
Hier die Dateien zum download, sie sind Ergänzung zu den Dateien "Sessiondaten speichern". Statistische Auswertungen in der Version vom 22.01.11 17:13
Logo