tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
516
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    deintag85 deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Bingen / Am Rhein
    Beiträge
    121
    Hallo,

    ich habe ein kleines Uploadscript bei dem User angeben können wie lange die Datei auf meinem System bleiben soll. Er hat die Auswahl zwischen 7, 30 und 90 Tagen.

    In der Datenbank hab ich nun dafür zwei Spalten vorgesehen.

    Zum Einen eine Spalte "Speicherzeit" mit VARCHAR in der dann die Zahl X drin steht.
    Zum Anderen eine Spalte "Eintragungsdatum" mit date in der die Funktion NOW() benutzt wird.

    Wie kann ich nun mit einer PHP-SQL Funktion die gesamte Datenbank durchlaufen? Also dass er sich sozusagen jede Zeile vornimmt und schaut, ob das Eintragungsdatum im Vergleich vom heutigen Datum grösser als X ist?

    Kann mir da jemand weiterhelfen?

    Liebe Grüße
     

  2. #2
    dbwizard dbwizard ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Zürich
    Beiträge
    285
    Zitat Zitat von deintag85 Beitrag anzeigen
    Hallo,

    ich habe ein kleines Uploadscript bei dem User angeben können wie lange die Datei auf meinem System bleiben soll. Er hat die Auswahl zwischen 7, 30 und 90 Tagen.

    In der Datenbank hab ich nun dafür zwei Spalten vorgesehen.

    Zum Einen eine Spalte "Speicherzeit" mit VARCHAR in der dann die Zahl X drin steht.
    Zum Anderen eine Spalte "Eintragungsdatum" mit date in der die Funktion NOW() benutzt wird.

    Wie kann ich nun mit einer PHP-SQL Funktion die gesamte Datenbank durchlaufen? Also dass er sich sozusagen jede Zeile vornimmt und schaut, ob das Eintragungsdatum im Vergleich vom heutigen Datum grösser als X ist?

    Kann mir da jemand weiterhelfen?

    Liebe Grüße
    - Warum trägst du nicht beim Speichern des Datensatzes gleich das Löschdatum ein ? Also wenn der Benutzer den Datensatz speichert, wird "Aktuelles Datum" plus "gewählte Frist" in ein Feld "Löschdatum" eingetragen. Mit Select ... from myTable WHERE Löschdatum < "HeutigesDatum" kriegst du die Row's, welche das Verfalldatum erreicht haben

    Gruss
     

  3. #3
    deintag85 deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Bingen / Am Rhein
    Beiträge
    121
    In der Tat, wäre das eine praktische Lösung. Probiere ich gleich mal aus
     

  4. #4
    deintag85 deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Bingen / Am Rhein
    Beiträge
    121
    Hi,
    um nochmal auf mein Problem zurückzukommen, weil ich jetzt seit mehreren Stunden daran sitze.

    Hab nun folgendes probiert

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    $heutigesdatum = date("d.m.Y",$timestamp);
     
     
    $abfrage = "SELECT * FROM `img` WHERE speicherzeit < '$heutigesdatum'";
    $ergebnis = mysql_query($abfrage) OR die(mysql_error());
     
    while($row = mysql_fetch_object($ergebnis))
    {
    unlink() // Dateien löschen etc....
     
    }

    Jedoch gibt er mir JEDE zeile aus, egal welches Datum ich als heutiges Datum benutze.

    Woran kann das Problem liegen? "Speicherzeit" ist VARCHAR. Kann es daran liegen?

    Ich will halt eine Art Schleife, die alle Zeilen raussucht, inder das Löschdatum kleiner als das heutige Datum ist. Anschließend soll er die Zeile löschen und von meinem Server die Daten löschen....

    Ich kriege aber die SQL Funktion nicht ganz gebacken.

    Kann mir da jemand helfen?

    Sry für Doppelpost.
     

  5. #5
    Dunas Dunas ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    158
    Versuch es mal anders.

    Du benutzt einen UNIX-Timestamp. Sind nur Zahlen und damit lässt sich viel leichter arbeiten.

    Die Spalte "Uploaddatum" und dei Spalte "Löschdatum" wandelst du in int(11) um.
    Uploaddatum füllst du beim Eintragen mit
    Code sql:
    1
    
    UNIX_TIMESTAMP()
    , und Löchdatum mit
    Code sql:
    1
    
    UNIX_TIMESTAMP() + (Haltbarkeitstage * 60 * 60 *24)
    .

    Die Abfrage würde dann lauten:

    Code sql:
    1
    
    SELECT * FROM tabelle WHERE `LÖSCHDATUM` < UNIX_TIMESTAMP();

    Bums fertig.
    Ach ja verwende nach Möglichkeit,anders als ich gerade, keine deustchen Umlaute in den Tabellen-,Datenbank- etc. namen.
     

  6. #6
    deintag85 deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Bingen / Am Rhein
    Beiträge
    121
    Zitat Zitat von Dunas Beitrag anzeigen
    Versuch es mal anders.

    Du benutzt einen UNIX-Timestamp. Sind nur Zahlen und damit lässt sich viel leichter arbeiten.

    Die Spalte "Uploaddatum" und dei Spalte "Löschdatum" wandelst du in int(11) um.
    Uploaddatum füllst du beim Eintragen mit
    Code sql:
    1
    
    UNIX_TIMESTAMP()
    , und Löchdatum mit
    Code sql:
    1
    
    UNIX_TIMESTAMP() + (Haltbarkeitstage * 60 * 60 *24)
    .

    Die Abfrage würde dann lauten:

    Code sql:
    1
    
    SELECT * FROM tabelle WHERE `LÖSCHDATUM` < UNIX_TIMESTAMP();

    Bums fertig.
    Ach ja verwende nach Möglichkeit,anders als ich gerade, keine deustchen Umlaute in den Tabellen-,Datenbank- etc. namen.
    ich habs nun mit einem kleinen PHP code (while etc..) gemacht und es scheint zu funktionieren. trotzdem danke für die hilfe!!
     

  7. #7
    Dunas Dunas ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    158
    geht natürlich nur zur lasten der geschwindigkeit, aber auch eine möglichkeit.

    wir haben gerne geholfen
     

Ähnliche Themen

  1. Artikel nach bestimmter Zeit löschen
    Von alex130 im Forum PHP
    Antworten: 10
    Letzter Beitrag: 20.06.08, 18:54
  2. Werte nach bestimmter Zeit aus DB löschen
    Von 26toto26 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 12.04.07, 16:00
  3. Antworten: 5
    Letzter Beitrag: 25.08.06, 21:30
  4. DB Inhalt nach bestimmter Zeit automatisch löschen
    Von kesnw im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 25.10.03, 18:18
  5. Eintrag nach einer bestimmten Zeit löschen
    Von Sebastian Wramba im Forum PHP
    Antworten: 4
    Letzter Beitrag: 31.03.02, 16:09