Anzeige

Datenbankeintrag löschen wenn älter als 10 Tage.

Datenbankeintrag löschen wenn älter als 10 Tage. | PSD-Tutorials.de

Erstellt von graphix, 29.09.2008.

  1. graphix

    graphix Weihnachtsmann

    Dabei seit:
    02.07.2006
    Beiträge:
    123
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Kameratyp:
    Canon EOS 5D MKII + Objektive halt.
    Datenbankeintrag löschen wenn älter als 10 Tage.
    Ich hasse es ja selbst, wenn Leute einfach um Programmierung eines Scripts bitten, ohne einen eigenen Quellcode zu posten, den man sich anschauen könnte.

    Aber ich möchte einfach gewisse Altlasten in meiner Denkweise loswerden.

    Ich möchte aus meiner Tabelle "newsletter" diejenigen Einträge löschen wo das Feld "aktiviert" den Wert "0" hat und dessen Wert im Feld "date" (Y,m,d also im Format "2008-09-29") älter als 10 Tage ist.

    Irgendsowas wie

    PHP:
    1.  
    2. $abfrage15 = "DELETE FROM `newsletter` WHERE aktiviert = '0' AND DATE_SUB(NOW(), INTERVAL 10 DAYs) >= `date`";
    3. mysql_query($abfrage15);
    4.  
    oder so.

    Aber ich bekomme es einfach nicht gescheit gebacken.

    Ich bin für jeden Tipp dankbar, und würde es sehr schätzen, wenn mir jemand eventuell einen kleinen codeschnipsel programmieren könnte.

    Vielen Dank!
    Graphix
     
    #1      
  2. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Datenbankeintrag löschen wenn älter als 10 Tage.
    AW: Datenbankeintrag löschen wenn älter als 10 Tage.

    ich bin mir nicht sicher, ob das der eleganteste Weg ist, aber ich würde so auf den ersten Blick die Datensätze prüfen (natürlich wo aktiviert=0 ist), und deren datum in ein Array geben. ( explode("-",$YMD_Datum) )
    dieses Array ($arr), kann die Werte für eine mktime methode liefern:
    Code (Text):
    1.  
    2. $arr = explode("-",$YMD_Datum);
    3. $zeit = mktime(0,0,0,$arr[1],$arr[0],$arr[2]);
    4.  
    $zeit kann nun mit time() verglichen werden, ob der Unterschied grösser als 10 Tage ist (10*24*60*60).
    wenn die Bedingung erfüllt ist, kann der Datensatz gelöscht werden.

    jedenfalls weiss ich keinen Weg,wie man einen String im format "2008-09-29" direkt vergleichen könnte.
     
    Zuletzt bearbeitet: 29.09.2008
    #2      
  3. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Datenbankeintrag löschen wenn älter als 10 Tage.
    AW: Datenbankeintrag löschen wenn älter als 10 Tage.

    Bin mir auch nicht ganz sicher:
    Code (Text):
    1.  
    2. WHERE (NOW() - INTERVAL 10 DAY) > `date`
    3.  
     
    #3      
  4. graphix

    graphix Weihnachtsmann

    Dabei seit:
    02.07.2006
    Beiträge:
    123
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Kameratyp:
    Canon EOS 5D MKII + Objektive halt.
    Datenbankeintrag löschen wenn älter als 10 Tage.
    AW: Datenbankeintrag löschen wenn älter als 10 Tage.

    @CIX8: ich liebe Dich. jetzt geht's. Danke!

    Danke auch an Dich, Sokie!
     
    #4      
  5. SierraLeon

    SierraLeon Guest

    Datenbankeintrag löschen wenn älter als 10 Tage.
    AW: Datenbankeintrag löschen wenn älter als 10 Tage.

    Ich weiß es ist ein bisschen unhöflich einen fremden Thread für ein eigenes Problem zu missbrauchen, aber da in dem Thread haargenau das beschrieben wird, was ich machen will, hab ich mir gedacht, dass ich hier einfach nochmal frag:

    Also ich brauch das gleiche wie graphix, nämlich dass Einträge gelöscht werden, die älter sind als 60 Tage. Ich nutze postgreSQL und habe es genauso ausprobiert wie es CIX88 geschrieben hatte, aber da kommt bei mir dann ein syntax error und ich finde keinen Fehler:

    PHP:
    1. @pg_query ("DELETE FROM mg_shoutbox
    2.                             WHERE (NOW() - INTERVAL 60 DAY) > Date")  OR
    3.                         die("Fehler beim Löschen alter Einträge: ".pg_last_error());
    Das ist mein Query und hier mal noch die Fehlermeldung:

    Code (Text):
    1. ERROR:  syntax error at or near "60" LINE 2: ...                          WHERE (NOW() - INTERVAL 60 DAY) > ...                                                              ^
    Bisher ist die Datenbank an dieser Stelle zwar leer aber das sollte dann ja eigentlich nur als Folge haben, dass nicht gelöscht wird oder ?

    Wäre toll wenn ihr mir da einen Tipp geben könntet.

    Grüße
    SierraLeon
     
    #5      
  6. Thyras

    Thyras Nicht mehr ganz neu hier

    Dabei seit:
    16.06.2009
    Beiträge:
    81
    Geschlecht:
    männlich
    Ort:
    Chemnitz
    Datenbankeintrag löschen wenn älter als 10 Tage.
    AW: Datenbankeintrag löschen wenn älter als 10 Tage.

    Ich arbeite nicht mit postgreSQL, aber sofern er sich nicht an dem 'Date' als Spaltenbezeichner stört, versuch' mal:

    Code (Text):
    1.  
    2. WHERE (NOW() - INTERVAL '60 days')...
    3.  
     
    #6      
  7. SierraLeon

    SierraLeon Guest

    Datenbankeintrag löschen wenn älter als 10 Tage.
    AW: Datenbankeintrag löschen wenn älter als 10 Tage.

    Super ich glaube das wars :) Hab aber auch vorsichtshalber das Date noch umbenannt :D

    Vielen herzlichen Dank :)
     
    #7      
x
×
×
teststefan