michi262
Goto Top

Datensatz aus Datenbank nach bestimmter Zeit löschen

Hi

da mir die SuFu leider nicht helfen könnte stellt ich euch meine Frage mal:

Also ich habe in meiner Datenbank Daten (kann man sich ja denken, aber egal) nun möchte ich alle Daten die älter als z.B. 5 Tage (120h) sind löschen. Die Datensätze haben eine Tabelle in denen ihr erstellung´s Datum als Zahl z.B. 1216396873 stehen. Nun wollte ich fragen wie ich es machen muss das das programm weiß was älter als 120h ist und löschen soll (wie ich was aus einer DB lösche weiß ich, kenn mich nur nicht mit dem Datum aus).

Hoffe Ihr habt verstanden was ich meine

Gruß
Michi262

Content-Key: 94000

Url: https://administrator.de/contentid/94000

Printed on: April 19, 2024 at 20:04 o'clock

Member: kaiand1
kaiand1 Aug 08, 2008 at 19:58:21 (UTC)
Goto Top
Lass einen Cronjob alle 6 Std laufen der Prüft ob der Eintrag noch aktuell ist oder in den Trash gehört
oder halt bei jeden Aufruf deiner Seite?!
Member: Michi262
Michi262 Aug 08, 2008 at 21:20:24 (UTC)
Goto Top
ich hätte das bei jedem aufruf gemacht. aber ich weiß j anicht wie ich überprüfe wie alt die daten sind. Ich hab mir das so gedacht.

ich dachte mir ich mach das ganze mir ner if anweisung.

$time=time()
$timedb= daten aus der datebank

$conrol = $time - $timedb

if($conrol => 120h)

{
datensatz aus db löschen
}

(das ganze ist natürlich abgekürz nur um euch meine idee zu zeigen)

mein problem ist nur das ich halt ne weiß welches datum welche zahlen reihenfolge ist.
hab z.B. kein plan das 1216396873 ist 18:01:13 18.07

gruß
Michi262
Member: Fritzchen
Fritzchen Aug 09, 2008 at 16:11:36 (UTC)
Goto Top
Hallöchen.

Hm, eine Möglichkeit wäre den gestzten Zeitstempel wieder in ein richtiges Datumsformat zurück zu verwandeln.

Dann so:
date("d.m.Y - H:i:s",$timedb)

$timedb wäre dann hier dein Zeitstempel aus deiner DB

Tschau.
Member: Dani
Dani Aug 09, 2008 at 20:09:48 (UTC)
Goto Top
Hi Michi,
es wäre interessant zu wissen, welche MySQL Version du einsetzte. Denn somit könntest z.B. bei v5 die Neuerung "Trigger" benutzen. Sprich dieser kann bei verschiedenen Events angeschlossen werden. Somit brauchst du keine Cronjob oder sogar per PHP lösen - alles nur mit Arbeit verbunden. ^^

Diese blöde "Zahl" ist die Zeit in Sekunden die seit dem 01.01.1970 vergangen ist. Sprich du Rechnst kurz die 120 Stunden in Sekunden um und gut ist (5*24*60*60). Danach rechnst du die Zeit auf den Timestamp drauf und schaust ob er kleiner oder größer ist wie der Aktuelle - fertig.


Gruss,
Dani
Member: mschatz
mschatz Aug 11, 2008 at 23:35:42 (UTC)
Goto Top
Nochmal hallo Michi262 face-smile

Kurz zur Erklärung: Das Format in deiner Tabelle nennt man UNIX_TIMESTAMP. Diese Zahl gibt die Anzahl der abgelaufenen Sekunden seit dem 01.01.1970, 00:00 Uhr an.

hier mal 2 Beispiele für dich:

mysql_query("DELETE FROM tabelle WHERE datum < '".strtotime('-5 days')."'");  
mysql_query("DELETE FROM tabelle WHERE datum < '".strtotime('-120 hours')."'");  

Gruß,

Markus
Member: Michi262
Michi262 Aug 14, 2008 at 11:18:52 (UTC)
Goto Top
hi.
danke für eure hilfe. habs hinbekommen