Besucherzähler 

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.