Rows aus mysql-Bank nach zeit loeschen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rows aus mysql-Bank nach zeit loeschen

    Hallo,

    ist es moeglich bestimmte rows aus einer mysql datenbank nach ca. 3600 sec automatisch loeschen zu lassen?

    als bsp. ich moechte ip-loggen und die row "ip" ist unique gesetzt, moechte diesen ip eintrag aber nach spaetestens 1 stunde wieder loeschen lassen. wie geht das mit php?

    Danke!

  • #2
    hmm,

    naja,
    immer wenn das Script aufgerufen wird dann löschst du alle Datensätze die älter sind. Du musst dafür natürlich eine eigene Spalte in die Tabelle bauen die den Timestamp enthält mit der Zeit als sie geschrieben wurde.

    Dann machst du einfach
    Code:
    $zeitraum = time()-3600;
    $query="DELETE FROM tab WHERE timestampspalte < ".$zeitraum;

    Kommentar


    • #3
      Automatisch indirekt:

      Mußt eine Abfrage dafür auf allen (oder nur den Benötigten) Seiten durchführen, die schaut, wo der Eintrag älter ist und das dingen dann löscht.

      Nach dem Prinzip funktionieren die UserOnliene-Skripts

      gruss

      Kommentar


      • #4
        uppss,, das ging aber Fix!

        das problem ist nur das dann die gesammte Tabellen reihe geloescht wird.. ich moechte aber nur die spalte "ip" loeschen lassen..der rest soll erhalten bleiben wie "comment" etc.. soll so eine art Spamschutz sein.

        @all Danke!

        [Editiert von dESIGN am 23-01-2002 um 13:08]

        Kommentar


        • #5
          machs mit nem update
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Code:
            $zeitraum = time()-3600;
            $query="UPDATE tab set ip=NULL WHERE timestampspalte < ".$zeitraum;
            außerdem verschiebe ich mal das Thema zum Forum SQL

            Kommentar


            • #7
              ok, das funzt sehr gut, Danke!

              ps. sorry.. dachte das es eher zu php-zeugs passt... =D

              Kommentar


              • #8
                naja, bei PHP und MySQL ist das auch nicht immer so klar zu trennen bzw. als Fragender weiß man ja oft auch vorher nicht, wie die Antwort hinter aussehen wird.

                Kommentar


                • #9
                  also ich hab das mal getestet, nur kommt jetzt in der db unter $Timestamp stehen dann nur 000000000 anstelle der "aktuellen" zeit. woran liegt das? wie kann ich das aendern.

                  $Timestamp = time(); stimmt doch um die aktuelle Zeit in $Timestamp schreiben zu lassen, oder? ...

                  Danke

                  Kommentar


                  • #10
                    sollte ein INT-Feld mit min. Größe 16 oder ein Typ timestamp -> vielleicht ist dein Feld zu klein

                    Kommentar


                    • #11
                      Ok, also das mit dem Timestamp funzt jetzt, aber irgendwie klappt das nicht, das die ip adress "geloescht" wird, nach einer gewissen Zeit.

                      also das TabellenFeld "ip" sieht so aus..

                      `ip` VARCHAR(100) NOT NULL

                      stimmt das so, oder woran liegt das?

                      Mysql bringt mich noch um den Verstand *g*

                      Kommentar

                      Lädt...
                      X