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

Counter - Lösch Query

Avatar user-279
29.03.2007 13:14

Hallo

Auf einer Webseite habe ich einen Counter, der IP und Timestamp einträgt. Dieser Counter dient als Tages-Besucher Counter, ich zähle einfach alle Einträge.

Dann hab ich vor dem Eintragen noch ein Löschquery, der allfällige Einträge von gestern rauschlöschen würde. Das Query sieht so aus:

// Einträge von gestern löschen
mysql_query("DELETE FROM `cntheute` WHERE DATE_FORMAT(`time`, '%e'zwinkern < DATE_FORMAT(NOW(),'%e'zwinkern"zwinkern;


Funktioniert eigentlich auch immer, ausser vom 09. auf den 10. eines Monats, und ich glaube den Monatswechsel bewältigt er auch nicht.

Wie muss ich das anpassen dass auch diese Wechsel klappen?


(Ich weiss dass diese Löschvariante nicht gerade sinnvoll ist, die Community hat aber nur etwa 50 user-129utzer. Ich werde es aber dann wohl mal mit einem Cronjob ablösen)

danke! so long.
-phore

Avatar user-253
29.03.2007 13:22

Das es mit Monaten nicht klappt ist ja klar... Du fragst ja nur den aktuellen Tag ab.

Zwei Vorschläge:

1) Nicht %e als Format sondern der Monatstag OHNE führende 0. Ich befürchte er verpeilt es mit der 0 und interpretiert es dann als String. Aber iegentlich ist das %e...

2) Als zusätzliche Bedingung würde ich einbauen, dass nur die Datensätze mit gleichem Jahr und Monat gelöscht werden. Also:
WHERE ... AND DATE_FORMAT(`time`, '%m%Y'zwinkern = DATE_FORMAT(NOW(), '%m%Y'zwinkern

Anmerkung: Das klappt natürlich auch nicht bei dem letzten eines Monats. Hier könnteste du noch zusätzliche alle des gleichen jahres aber kleineren monaten löschen

Die Folge es klappt nicht mehr beim letzten eines Jahres => also auch alle kleneren Jahre löschen.


Komplettt anderer Ansatz:
Du wandelst einfach das datum aktaullerTagMinus1.akuellerMonat.Aktuelles Jahr 00:00:00 in einen Timestamp um und löschst alle kleineren ....