PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [vB 2.2.x] vB Total and Daily Counter


Thomas P
17.10.2002, 14:32
Hallo allerseits,

wie vielleicht der ein oder andere mitbekommen hat, war ich einige Zeit auf
der Suche nach einem fertigen PHP/MySQL counter, der mir die absoluten und
täglichen Hits (pageviews) auf eine oder alle Seiten in einem vB ausgibt.
Da es sowas anscheinend nicht gibt, habe ich mir selbst folgendes gestrickt:

vB Total and Daily Counter
PHP/MySQL Total Hit Counter von eva2000
http://www.vbulletin.org/forum/showthread.php?s=&threadid=26527
PHP/MySQL Daily Hit Counter von Qads
http://qadsscripts.strykenet.com/home.php?what=Scripts&id=4

Was bringt mir der hack?
Dieser Hack zählt alle Zugriffe auf ein Forum und gibt zwei Zahlen aus:
-alle Hits des heutigen Tages (daily pageviews) - $hits_daily
-alle Hits insgesamt (total pageviews) - $hits_total

Demo: http://mcseboard.de
Getestet mit vB 2.2.x, theoretisch mit jeder vB version kompatibel, da unabhängig davon.


Was ist zu tun?
Übersicht:
1. Ausführung von 2 SQL Anweisungen zur Erstellung zweier Tables (zB. mit phpMyAdmin)
2. 15 Zeilen Code zum 'PHP parsed code' hinzufügen
3. 2 Variablen zur Ausgabe der Counter-werte in Template(s) plazieren (zB. forumhome)

Im Detail:
1. Ausführung von 2 SQL Anweisungen zB. per phpMyAdmin zur Erstellung zweier Tables
Anweisung CREATE counter_total

CREATE TABLE counter_total (count INT(11) UNSIGNED NOT NULL);
INSERT INTO counter_total SET count = 0;

Anweisung CREATE counter_daily
CREATE TABLE counter_daily (
ID int(11) NOT NULL auto_increment,
date text NOT NULL,
PRIMARY KEY (ID)
) TYPE=MyISAM;


Wie üblich solltet Ihr eine aktuelle Sicherung der Datenbank vor Einfügen der Anweisung haben.
Beide CREATEs stammen nicht von mir ;), beide scripts sind auf einigen vB's bzw. Seiten im Einsatz.

2. 15 Zeilen Code zum 'PHP parsed code' hinzufügen

// Daily & Total Counter Hack - kuddos to George (eva2000) of vb.com & Qads from Qads Scripts
// Sources:
// '[vB v2.2.2] page - hit counter in mysql' by eva2000 - http://www.vbulletin.org/forum/showthread.php?s=&threadid=26527
// 'PhpDaily Counter 1.1' by Qads - http://qadsscripts.strykenet.com/home.php?what=Scripts&id=4

//begin another vb counter hack
$counter_date = date("j/m/Y");
$counter_insert = mysql_query("INSERT INTO `counter_daily` (`ID`, `date`) VALUES (Null, '$counter_date')");
$counter_delete_old = mysql_query("DELETE FROM counter_daily WHERE date <> '$counter_date'");
$counter_show = mysql_query("SELECT * FROM counter_daily");
$hits_daily = mysql_num_rows($counter_show);
//$hits_daily = number_format($hits_daily);

$result = mysql_query("SELECT count FROM counter_total");
$hits_total = mysql_result($result, 0) + 1;
$result = mysql_query("UPDATE counter_total SET count = count + 1");
//$hits_total = number_format($hits_total);
// end another vb counter hack


Obigen Code in die Sektion 'PHP parsed code' in Eurem Style (ACP Menü Styles -> Modify -> 'MyStyle')
oder in das Template 'phpinclude' (ACP Menü Templates -> Modify -> 'MyStyle') setzen, wenn die
Hits für alle Forenseiten gezählt werden sollen.
Um nur die Hits auf die Startseite zu zählen, plaziert man das ganze in die index.php
oberhalb von $birthdaybits="";
Siehe auch post 31 (http://www.vbulletin.org/forum/showthread.php?postid=218006#post218006)
Beides habe ich ausprobiert und funzt wunderbar.

3. 2 Variablen zur Ausgabe der Counter-werte in Template(s) plazieren (zB. forumhome)
$hits_daily - Alle Hits des heutigen Tages (daily pageviews)
$hits_total - Alle Hits insgesamt (total pageviews)

Wer die Zahlen im englischen Format mit Kommatas nach den Tausenderstellen haben will,
kann die beiden Zeilen wieder einkommentieren:
//$hits_total = number_format($hits_total); & //$hits_daily = number_format($hits_daily);

Das war's, im Grunde sehr einfach.

Hoffe, es kann jemand etwas damit anfangen.
Verbesserungsvorschläge bitte posten.
Sub-optimal ist die Tatsache, daß der daily hits teil pro Hit eine row füllt, d.h. Anzahl
der daily hits = Anzahl an rows. Da die table aber täglich geleert wird,
stört's imo nicht sonderlich.

cu,
-Tom

Thomas P
17.10.2002, 14:42
http://www.mcseboard.de/temp/whoisonline.gif

vB Total and Daily Counter 1.0

Exodus
20.10.2002, 22:55
Nur leider hat es keine Reload Sperre? Gibt halt so idioten die manchmal nichts zu tun haben, und die sitzen dann den ganzen Tag da und klicken Refresh, da hat man am Ende auch kein richtiges Ergebnis! :(

Boothby
20.10.2002, 23:11
Das müßte doch aber ganz fix zu machen sein. Einfach die IPs abspeichern und gucken, ob die dann schon innerhalb einer bestimmten Frist aufgetaucht sind.

Thomas P
21.10.2002, 11:28
Original geschrieben von Exodus
Nur leider hat es keine Reload Sperre?

Hallo Exodus,
das ist richtig, war mir persönlich aber nicht wichtig.

Gibt halt so idioten die manchmal nichts zu tun haben, und die sitzen dann den ganzen Tag da und klicken Refresh, da hat man am Ende auch kein richtiges Ergebnis! :(

Im ernst?
Ja, gut, ein paar reloads vielleicht, aber exzessiv doch nicht - zumindest bei uns beobachte ich das nicht.


So wie er jetzt ist, hat der mini-hack meine bescheidenen PHP/MySQL Kenntnisse im Moment genügend Zeit gekostet, sorry.
Es kann gerne jemand den Hack erweitern, habe nichts dagegen - solange obige Quellangaben erhalten bleiben. :)

cu,
-Tom

h75
04.04.2004, 22:48
Halloo,

ich hab diesen Counter heute im Forum eingebaut. Hat trotz fehlender PHP-Kenntnisse funktioniert. Das war das erste mal, das ich über PHP-MyAdmin gearbeitet habe. Ich wusste zwar, das man da rein kann, aber habe mich bisher nie getraut. Gut mit nem Backup kann man jan nix falsch machen, aber trotzdem.. Jetzt verstehe ich auch den Aufbau der Datenbank. Ist ja schon ganz schön fett, was da alles so drinne steht.. Obwohl das Forum gerade mal 2 Wochen Online ist...

http://halloo.de/

Der Counter steht unter den Statistiken. Ich hab die Was ist hier Los Box etwas umgebaut. :D

h75
04.04.2004, 22:49
ohwei. das thema is ja schon 2 Jahre alt, sehe ich gerade.. *uff*

Thomas P
06.04.2004, 00:03
Macht ja nix :D

Der hack tut mir immer noch gute Dienste, auch unter vB3 :)