Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Inhalt nach 3 Tagen aus Datenbank löschen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 20.07.2007, 12:56

Hallo,

mal eine Frage. Wie lassen sich Inhalte nach Ablauf von 3 Tagen aus der Datenbank löschen?

Ich habe da ein Script, dass automatisch eine Bestätigung verschickt. Der darin enthaltene Link dient der Bestätigung des Eintrags.

Ich muss diese Inhalte (die nicht nach 3 Tagen bestätigt wurden) immer per Hand löschen.

Wie funktioniert sowas in etwa?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Anonymous

Beitrag von Anonymous » 20.07.2007, 13:11

hast doch sicher nen Feld mit nem timestamp wann der Eintrag getätigt wurde, oder?

und da dann einfach täglich nen cronjob laufen lassen der die entsprechenden einträge löscht...

Code: Alles auswählen

delete from table where bestaetigt = 0 and zeit_der_eintragung < &#40;now&#40;&#41; - &#40;3*24*60*60&#41;&#41;

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 20.07.2007, 13:16

Neeee, habisch nicht.

Wie bekomme ich die Zeit zusammen mit dem Eintrag in die Datenbank?

Und lässt sich das dann auch per PHP-Abfrage löschen?

Danke schon mal.

Anonymous

Beitrag von Anonymous » 20.07.2007, 13:35

Michael1967 hat geschrieben:Wie bekomme ich die Zeit zusammen mit dem Eintrag in die Datenbank?
insert into table (.........., zeit_der_eintragung) values (........ ,now())

wobei zeit_der_eintragung ein int feld ist... konntest natürlich auch direkt bei der erstellung der Tabelle bestimmen, dass zeit_der_eintragung als defaultwert den aktuellen timestamp bekommt...

wenn du in der benachrichtigungsemail auch den zeitpunkt angeben möchtest bis wann der Bestätigungslink angeklickt werden muss, kannste diesen per time() in php bestimmen und dann weiterverwenden, z.B. mit date() in ein richtiges Datum umwandeln für die email...
Michael1967 hat geschrieben: Und lässt sich das dann auch per PHP-Abfrage löschen?
nur wenn du per php auf die datenbank zugreifen kannst... :wink:

auch bei einem cronjob, müssteste erst über ein script auf die DB zugreifen um die query abzusetzen...

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 20.07.2007, 13:43

Ja vielen Dank. Werde mich mal dransetzen und alles zerstören *gg*

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 20.07.2007, 13:51

Geht das auch, wenn ich das Datum so in die Datenbank schreibe?

Code: Alles auswählen

$datum = date&#40;"d.m.Y",time&#40;&#41;&#41;;
Das mit in die Datenbank übertragen - "$datum"

Aber wie muss das dann ausschauen?
delete from table where bestaetigt = 0 and zeit_der_eintragung < (now() - (3*24*60*60))

pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 20.07.2007, 15:51

wenn du das datum d.m.Y in die db schreibst kannst du damit nicht rechnen. am besten sonst ne spalte vom typ datetime und im insert dann ein NOW() verwenden, dann kannste in der abfrage zum löschen auch mit TIMEDIFF arbeiten.

chrizz
PostRank 10
PostRank 10
Beiträge: 3044
Registriert: 05.07.2006, 10:37
Wohnort: Berlin

Beitrag von chrizz » 20.07.2007, 16:19

wenn du keinen bock auf nen cronjob hast, dann kannst du auch, nen quick&dirty workaround bauen. das script, was die bestätigungsmails verschickt, überprüft die DB auch gleich auf Einträge, die älter als 3 Tage sind und löscht diese. Da kann es dann aber vorkommen, dass dies nicht passiert, weil keiner die Bestätigungsmailsseite aufruft... also am simpelsten wäre nen cronjob...aber man kanns wie gesagt auch in andere dateien verpacken, die öfters aufgerufen werden.
cheers

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 20.07.2007, 16:24

pvdb hat geschrieben:wenn du das datum d.m.Y in die db schreibst kannst du damit nicht rechnen. am besten sonst ne spalte vom typ datetime und im insert dann ein NOW() verwenden, dann kannste in der abfrage zum löschen auch mit TIMEDIFF arbeiten.
Wie wird denn damit gerechnet? Sorry, aber so viel verstehe ich davon noch nicht!

Wie muss ich in die Datenbank schreiben? Und was macht TIMEDIFF?

:cry:


pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 20.07.2007, 20:04

hier ein auszug aus einem meiner dateien, wie es sich auch ohne cron lösen lässt:

Code: Alles auswählen

if &#40;rand&#40;0, 50&#41; == 1&#41;
&#123;
   $sql = "delete from table_name where TIMEDIFF&#40;NOW&#40;&#41; , click&#41; > '24&#58;00&#58;00'"; 
   mysql_query2&#40;$sql&#41;;
   &#125;
quasi, im schnitt bei jedem 50sten aufruf alles aus der tabelle löschen was älter als 24 stunden ist.

die spalte click ist vom typ datetime und wenn ich einen datensatz einfüge, dann bekommt click ein NOW()

am besten legst du dir mal ne testtabelle an oder eine kopie und probierst ein wenig herum, bevor du dich an die original daten wagst ;)

phil

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag