Counter Problem

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hi zusammen,

ich hab ein kleines Problem mit meinem Mysql Counter. Und zwar speichere ich die Counterhits in einer Tabelle mit ID, ipadr. Client, Timestamp . So jetzt zu meinem Problem, ich möchte das nach 3 Tagen die Tabelle geleert wird und zwar folgendermaßen.

Beispiel wir haben heute den 26.10.04 dann sollen alle Einträge die den Timestamp vom 23.10.04 haben komplett gelöscht werden.

Folgendes habe ich schon programmiert:

PHP:
$zeitpunkt = time();

$newcount = "259200";

$deletecounterhits=mysql_query("DELETE FROM $counterhits WHERE countflag < $zeitpunkt - $newcount");

Nun irgendwie löscht er immer nur Teile raus aber nicht die vollständigen Row´s von dem Datum das er löschen soll.
 
Hi!

Bitte poste mal ein bisschen mehr Infos: Was bedeuten die einzelnen Tabellenzeilen, wie ist die Tabelle exakt aufgebaut (insbesondere sind die Datentypen interessant)....

Mamphil
 
Code:
Feld         Typ         Attribute     Null     Standard     Extra     Aktion 
id          int(14)                      Nein                            auto_increment    
ipadr        char(255)                  Ja        NULL      
client       char(255)                  Ja        NULL      
countflag     char(255)                  Ja        NULL      
date         char(255)                  Ja        NULL

Sorry das es bissl schief iss :p
 
Hi!

Wie bist du denn auf die Idee gekommen, du könntest eine als char gespeicherte Zahl mit mathematischen Operatoren vergleichen?

In der MySQL-Datenbank wird zwischen den verschiedenen Datentypen unterschieden! Du musst dort also entweder den Typ INT(11) UNSIGNED verwenden oder den Typen DATE oder DATETIME...

Dann klappt's auch mit dem Vergleichen... ;)

Mamphil
 
Ok ja hast Recht das kann man ändern (war nich von mir die Mysql Einträge)

Ich weiß jetzt aber warum es nicht . Und zwar:

PHP:
$zeitpunkt = time() - 259200;

$deletecounterhits=mysql_query("DELETE * FROM $counterhits WHERE countflag < $zeitpunkt");

countflag ist der Timestamp wo der letzte Count genommen wurde. Jetzt hab ich natürlich mehrere Timestamps weil ja mehrmals am Tag gezählt wird. Wenn ich jetzt aber mit der oberen Variable $zeitpunkt vom aktuellen Timestamp genau 259200 abziehe dann löscht er doch nur den query in der DB der exakt dieser Zeit entspricht und nicht alle Counts die am Tag gezählt wurden.
 
Zurück