Webstatt.org - Community seit 2006 - 2012 (2024?)

ein "einfacher" counter

Avatar user-180
29.05.2007 21:53

HAI.
mich plagt eine eigentlich ziemlich einfache aufgabe und zwar will ich nur einen counter erstellen.

ich will natürlich auch immer vollen überblick auf die seitenzugriffe haben, deshhalb hätt ichs gern, dass man schöne statistiken anzeigen lassen kann. zum beispiel seitenzugriffe pro jahr, seitenzugriffe zur stunde des tages, zur stunde des tages im juni 07 und so weiter. reicht es wenn ich die zugriffszeit in der datenbank speichere oder geht das noch nicht?

wie kann ich das ganze dann anzeigen lassen?

may the force be with you. but mostly with me.
user-265
30.05.2007 09:55

Kannst ja in ne Tabelle einfach immer den Timestamp speichern, sobald jemand ne Seite aufruft, das klappt aber verfälscht natürlich ziemlich die Statistik, wenn jemand wirr rumklickt verursacht er kurz mal 20 Zugriffe. Deswegen fangen die meisten Counter das ab und speichern die IP, dann werden alle Zugriffe innerhalb einer Stunde z.B. nur als ein mal auf dem Counter gezählt.

Avatar user-317
30.05.2007 11:15

Auf GFX-World.net gibts ein sehr ausführliches Tutorial für einen Counter, der genau
so arbeitet, wie dus haben möchtest. Könntest dir also mal angucken wie der das
gemacht hat. Allerdings ist die Seite zur Zeit offline...

Avatar user-180
30.05.2007 13:00

hm also es geht mir jetzt weniger um die verfälschten ergebnisse, die ip-sperre kriegt man überall her. mir gehts darum, dass man dann aus den gepeicherten daten auch was sinnvolles anzeigen kann. also wnen ich nur die zugriffszeit speichere (und in ner anderen tabelle nochmal ip und zugriffszeit für die sperre), dass ich dann daraus verschiedene ausgaben bekommen kann.

@ sven: du kannst dich nicht zufällig erinner wie das tut ungefähr gearbeitet hat, oder?

may the force be with you. but mostly with me.
Avatar user-317
30.05.2007 16:59

Ne sorry, ist doch schon etwas zu lange her das ich mir das Tut angeschaut habe. Die Seite wird aber wohl eh demnächst wieder erreichbar sein.

Avatar user-162
30.05.2007 17:55

Das dürfte auch mit nur einer Tabelle machbar sein...
Du brauchst lediglich eine Tabelle mit
id | ip | timestamp
und beim Eintragen überprüfst du ob ein Eintrag unter der IP des momentanen Besuchers in einer Zeitspanne von XX Minuten (zb 30min) bereits existiert.
Die statistischen Angaben lassen sich alle mit geschickten Querys auslesen...

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-180
30.05.2007 18:34

eigentlich gehts mir genau um diese geschickten queries... ich hab keinen schimmer wie ich das machen soll...

may the force be with you. but mostly with me.
Avatar user-162
30.05.2007 18:54

nun die kannst du über WHERE Klauseln mit COUNT verbinden zb um alle Einträge die am Tags XX.XX.XXXX zu finden machst du

$sql = "SELECT COUNT(*) AS ´tag1´ FROM ´counter´ WHERE ´time´ = 'XXXX-XX-XX XX:XX:XX'";

es gibt noch verschiedene Funktionen die du direkt in MYSql verwenden kannst.

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-180
31.05.2007 08:23

edit
okay, hab auch die rekorde inzwichen hinbekommen

okay, ich hab es jetzt einigermassen hinbekommen.

was mir jetzt noch fehlt sind maximalwerte. wie bekomme ich das hin?
also rekord von diesem monat, diesem jahr all time ect?

(es werden nur die zugriffszeiten in DATETIME gespeichert)

may the force be with you. but mostly with me.
Avatar user-180
31.05.2007 17:29

okay, dafür habe ich ein neues problem.

und dass dieser code auf meinem server zu keinem fehler fürhr, auf einem anderen aber schon.
$abfrage_zaehlerstand_diese_woche = "SELECT COUNT(*) FROM `".$db_prefix."counter` WHERE DATE(`datum`) = DATE(NOW() - INTERVAL ".$i." DAY)";


$i ist eine zahl....

das problem kann man auch live begutachten unter
http://rebellen-web.de/prepage/statistik.php?anzeige=alles und
http://beta.bierquartier.de/rebellen/prepage/statistik.php?anzeige=alles

kann mir jemand helfen?

may the force be with you. but mostly with me.
Avatar user-162
31.05.2007 18:18

lass dir mal mit mysql_error() eine genauere Fehlerbeschreibung ausgeben (bei dem Server wos nicht funktioniert)

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-180
01.06.2007 07:34

fehlermeldung + problemstelle jeweils:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(`datum`) = DATE('2007-05-31 18:58:15'zwinkern' at line 1
$abfrage_groesster_wert_in_einem_jahr = "SELECT COUNT(*) FROM `".$db_prefix."counter` WHERE YEAR(`datum`) = YEAR('".$row->datum."'zwinkern";


You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(`datum`) = DATE(NOW() - INTERVAL 0 DAY)' at line 1
        $abfrage_zaehlerstand_diese_woche = "SELECT COUNT(*) FROM `".$db_prefix."counter` WHERE DATE(`datum`) = DATE(NOW() - INTERVAL ".$i." DAY)";


You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(`datum`) = DATE(NOW() - INTERVAL 5 DAY)' at line 1
$abfrage_zaehlerstand_jahre = "SELECT COUNT(*) FROM `".$db_prefix."counter` WHERE EXTRACT(YEAR FROM `datum`) = '".$richtiges_datum_dieses_jahr."'";


weiss jemand woher die fehlermeldungen kommen?

may the force be with you. but mostly with me.
Avatar user-162
01.06.2007 11:57

lass dir mal den vollständigen (geparsten) Query ausgeben. Könnte es möglich sein dass die Variablen $db_prefix, $row->datum und $i falsch sind..?
Weil die Querys sollten soweit in Ordnung sein, also bei mir local mit Beispieldaten funktionieren sie

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-180
01.06.2007 12:29

hmm also ich meine dass alles richtig ist...
http://rebellen-web.de/prepage/statistik.php?anzeige=alles

kann es eine rolls spielen dass mein server mysq5 hat und der ander mysql4?

may the force be with you. but mostly with me.
Avatar user-162
01.06.2007 12:42

Eigentlich nicht...
weil die Funktionen YEAR, DATE, usw gibt es auch in mySQL4
welche Version hast du den auf dem anderen Server? Tiefer als 4.1.1?

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-180
01.06.2007 13:12

mein server: 5.0.24
anderer server: 4.0.27

kann man da irgentwas machen?

may the force be with you. but mostly with me.
Avatar user-162
01.06.2007 13:27

den Hoster fragen ob er nicht eine neurere Version von mySQL updaten kann oder halt den Hoster wechseln...

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-180
01.06.2007 13:47

hm hab nen neue db mit mysql5 angelegt. jetzt gehts... danke für die hilfe!

may the force be with you. but mostly with me.
Avatar user-162
01.06.2007 15:00

bitte zwinkern

ps: in deinem mittleren Query könntest du NOW() auch durch CURRENT_DATE ersetzen wenns nur ums Datum und nicht um einen genauen Timestamp geht... Geht aber auch so...

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine