Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Datensatz nach 3 Tagen automatisch löschen. Antworten
Datensatz nach 3 Tagen automatisch löschen.

Lexia
Pixelschubser


Beiträge: 13


raiserle schrieb am 11.09.2006 18:55
warum die frage, was verstehst du nicht. steht doch oben schon alles richtig da.
vorrausgesetzt, du speicherst als timestamp.
du brauchst dort kein mktime(); und richtig hast dus selber erkannt, du musst vorher kein select aus der db machen.


Siehe meinen Post davor:
Und wenn das Datum einfach als Varchar gespeichert wurde?
Also 06.09.2006 ?

Das muss ich ja erst umwandeln in einen timestamp und ich bekomme bei der Darstellung so wie sie jetzt da ist eine Fehlermeldung (irgendwas mit der Variable Oldtime, ich kopier die Fehlermeldung morgen mal hier rein).

Also, ich mach dann erstmal die Abfrage um überhaupt auf den Wert zugreifen zu können den ich in einen Timestamp umwandeln will, richtig?
$abfrage = "SELECT datum FROM blackboard";
Dann muss er umgewandelt werden... ist der Wert datum automatisch in der Variable $datum gespeichert nach dem Select? Wenn nicht, wie kriege ich den da rein? Fragen über Fragen...

Vielen Dank schonmal für deine Hilfe!

  Profil   E-Mail   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


fakt nr.1 : wenn du das dort als varchar in dem format wie 2006-09-11, oder 11.09.2006 speicherst, wirds eher schwer werden.
man möge mich berichtigen, aber nen alphanumerischer vergleich von sowas ist sehr unsicher und kann zu unerwarteten fehler, löschen führen.
fakt nr.2 : wenn du die mysql-date funtion benutzt, musst du auch in dem delete mit der selbigen funktion rechnen.
fakt nr.3 : wenn das feld in der mysql zwar varchar ist, du dort aber mit einem timestamp speicherst, sollte das was hier schon geschrieben stand, problemlos ansetzen können.
fakt nr.4 : man sollte sich schon im vorfeld gedanken machen, welche spalten, mit welcher eigenschaft man benötigt.

das einzige was mir jetzt dazu einfallen würde, noch eine spalte in die datenbank mit aufzunehmen und über ein script anhand von deinem vorhandnen datum ein timestamp in die spalte zu schreiben.


---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Du kannst doch auch problemlos immer per PHP das Datumsformat da temporär für die Berechnung in eine timestamp umwandeln. Wie ich halt schon sagte. Nicht so schön, aber damit kann man dann rechnen und es funktioniert.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


sorry languitar, dann habe ich das von dir überlesen, oder eher nicht so verstanden.

aber dann weis Lexia ja immer noch nicht wie er das machen sollte. wobei ja dabei wieder
richtig ist, SELECT
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12:
<?php
$del_tage=30;    // tage nach denen gelöscht werden soll
$datum_heute=mktime(0,0,0,date('n',time()),date('j',time()),date('Y',time()));
$result=mysql_query("SELECT datum,id FROM <tabelle>Order BY id");
while($row=mysql_fetch_assoc($result)){
    $datum_sql=explode(".",$row['datum']);
    $datum_sql=mktime(0,0,0,$datum_sql[1],$datum_sql[0],$datum_sql[2]);    // datumsformat 11.09.2006
    if($datum_sql<=($datum_heute-(86400*$del_tage))){
        mysql_query("DELETE FROM <tabelle> WHERE id='".$row['id']."'");
    }
}
?>


so in etwa sollte es aussehn, oder meintest du es noch etwas anders

wobei ich für das einmalige wäre, eine neue spalte in die sql wo der timestamp drin steht.
und dann einmal nur nen script drüber laufen lassen, der aus dem vorhandenen datums zeitformat nen timestamp setzt.

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


timestamp ist natürlich schöner, aber so sollte es auch gehen, wenn ich das Problem richtig verstanden hab.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


soll nicht in spamm ausarten... aber

nach dem prinzip wie der code dort steht ist natürlich absolut inakzeptabel, wegen den haufen selects bzw. update´s

das kann man wirklich nur als cronjob machen wobei ja nen ... Update delete from <tabelle> where datum_als_timestamp <= mein_timestamp

deswegen, überlegt vielleicht nochmal wirklich das script etwas umzubauen... entweder auf den unixtimestamp oder auf die von mysql angebotene date funktion
wobei mysql datefunktion die beste wahl wäre, wenn man mit dem datum arbeiten will.

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

Lexia
Pixelschubser


Beiträge: 13


Tausend Dank, hat alles super geklappt!

  Profil   E-Mail   Editieren   Zitieren
Seite 1 | 2  

Antworten
Nach oben