[Solved] Ich stehe voll auf dem Schlauch, DB-Einträge älter als x Tage löschen !?

Begonnen von pyr0, 09 Februar 2010, 10:43:37

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

pyr0

Salü an alle,
im Moment hängt es bei mir voll:

Zur Situation, in der DB-Tabelle habe ich folgenden Sachen drin: msg_id,msg_project_id,msg_date, msg_user, msg_user_id,msg
ja und in msg_date steht der Unixtimestamp drin und zwar so:
$timestamp = time();

Soweit auch kein Probleme anzeigen, bearbeiten  und einzelln löschen alles super nur möchte ich jetzt das vor dem Aufruf bzw der Anzeige einfach alle einträge die älter x Tage sind löschen. Und genau da hängt es gerade bei mir, hier mal mein Versuch:

$time_wann = '3600';
echo "--$time_wann--"; # zur kontrolle und zum testen
sql_query("DELETE FROM " . $prefix . "_project_board where msg_date < '$time_wann'");

und es kommt noch nicht einmal zur Fehlermeldung

Aber das geht so nicht  :gruebel:

Bitte um Eure Hilfe hiermit  :smile:

Merci
Kein Support über PN, Mail !
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Webfan

Möchtest Du alle Einträge löschen die älter als 3600 Sekunden sind?
Dann meinst Du sicher statt $time_wann = '3600';
$time_wann =  time() - 3600;
So wie Du es geschrieben hast werden alle Einträge gelöscht die älter als 3600 Sekunden nach Starten der Unixepoche sind, also 1970, das wird wohl bei Dir keiner sein, somit wird nichts gelöscht es erfolgt aber keine Fehlermeldung.

pyr0

Erstmal Danke,
werd das heute noch testen,denn ich bin gerade im Zug  :puzzled:

und ja ich will Einträge löschen welche zB älter als 30 Tage sind  :red:
im Moment mach ich das so.
$del_date_sec = '86400';
$del_date_auto_in_day ='30'; # auf 30 Tage festgelegt
$del_date = $del_date_sec * $del_date_auto_in_day;
$stamp = time();

$stamp_new= $stamp - $del_date;
$resulta = sql_query("SELECT msg_id,msg_date  FROM " . $prefix . "_project_board ");
while(list($msg_id,$msg_date) =sql_fetch_row($resulta)){
if($msg_date <= $stamp_new){
sql_query("DELETE FROM " . $prefix . "_project_board where msg_id='$msg_id'");
}

}


aber das ist nicht unbedingt die schnellste und sauberste Lösung und vorallem unnötige Datenbankabfragen  :red:,
es geht aber !

Melde mich dann später nochmal ob es so geklappt hat  :thumbup:
Kein Support über PN, Mail !
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Webfan

Zitataber das ist nicht unbedingt die schnellste und sauberste Lösung und vorallem unnötige Datenbankabfragen
Teste doch mal mal
sql_query("DELETE FROM " . $prefix . "_project_board where msg_date <".$stamp_new);

pyr0

So hab es eben getestet und muss sagen jupp es rennt  :thumbup:

Merci und  :drinks:
Kein Support über PN, Mail !
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!