Einträge, die älter als 2 Tage sind aus einer Datenbank löschen

Ich verstehe nicht, warum du dich so auf den Tag des Monats fixierst.
Wenn ein neues Monat beginnt (1.) dann wird laut deinen Script so schnell nichts mehr aus deiner Datenbank gelöscht. Du löscht alle Datensätze, deren Zahl des Tages zwei kleiner sind als der heutige Tag. Wenn jetzt allerdings heute der erste ist, wird der 30. des lezten Monats nicht gelöscht, da er nicht kleiner/gleich 1 ist.

mit time()-60*60*24*2 bekommst du das akutelle Datum minus zwei Tage.
Du willst alle Einträge löschen, die älter als zwei Tage sind. Dazu nimmst du "ganz einfach" das akutelle Datum und ziehst zwei Tage ab:
$time2=time()-60*60*24;
$ende=mktime(23,59,59,date("m",$time2),date("d",$time2),date("y",$time2))

Jetzt löscht du alle Datensätze, die kleiner sind als der TimeStamp von Vorgestern...

dr_Alex Code ist die "perfekte" Lösung.
Allerdings würde ich einen CronJob für den ganzen Spaß nehmen und nicht bei jedem Seitenaufruf prüfen, ob noch Einträge von Vorgestern vorhanden sind (Bei meinen Seiten mit mehr als 2000 Besuchern täglich wäre das ein Choas) ;)
 
Da eine hat nichts mit dem anderen zu tun.
Gehn wir die Problematik doch noch einmal nüchtern an.

Die Funktion ist dazu da, um einen Datensatzüberlauf zu verhindern, richtig?
Warum willst du ungedingt die 2 Kalendertage löschen?
 
Jörg Rißmann hat gesagt.:
Warum willst du ungedingt die 2 Kalendertage löschen?

Damit die IP- Adressen aus der DB verschwinden und der Counter funktioniert ;)

Damit es nciht jedesmal gelöscht werden muss, kann ich ja eine spalte einfügen, die ne 1 oder 0 enthält, um dem Script zu ssagen, ob schon gelöscht wurde oder nciht.
 
Zuletzt bearbeitet:
Naja, ich würde die Daten einfach in der Datenbank lassen.
Du checkst doch sicherlich, ob die IP bereits in der Datenbank steht. Wenn du jetzt die WHERE Klausel des Deletes als WHERE Klausel des Selects benützt, haste das selbe Ergebnis. So sparste dir das Löschen der Einträge...

Zusätzlich könntest du dann noch eine Statistik & Co. machen (z.B. die UserID eines registrierten Benutzers mitloggen, ...)

So Long
 

Neue Beiträge

Zurück