Datenbankeinträge nach 00:00 Uhr löschen

  • Also ich habe ein Script, dass die IP des Clienten und den aktuellen Timestamp in die Datenbank speichert. Das selbe Script prüft voher ob ein Eintrag mit der aktuellen ClientIP vorhanden ist. Wenn nein dann speichert es die IP und wenn ja dann gibt es einen Fehler aus. Nun möchte ich es so machen, dass die Einträge immer um 00:00 Uhr jede Nacht gelöscht werden. das kann ja dann ganz am anfang vom script geprüft und ausgeführt werden. Nur hab ich keinen plan wie ich dem script sdagen soll, das es die immer um 00 Uhr löschen soll. Das kann ich doch bestimmt irgendwie über den abgespeicherten Timestamp prüfen oder? Kann mir da bitte jemand helfen?

    Don't follow me, I run into walls.

  • Das könntest Du auch bei jedem Aufruf des Scripts laufen lassen. Löscht alle Einträge bis 23:59 des Vortages. Ich gehe davon aus Du meinst wirklich einen Timestamp, nicht ein DATE-Feld.

    SQL
    DELETE FROM tabelle WHERE spaltemitdatum <= UNIX_TIMESTAMP(DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY),'%Y-%m-%d 23:59:59')
  • Ja richtiger timestamp der per NOW() in ein Timestampfeld der tabelle geschrieben wird.
    Ich probier das von dir morgen mal aus danke. ich geh schalfen gute nacht.

    Don't follow me, I run into walls.

  • Was ist denn UNIX-TIMESTAMP?
    Wenn ich die Daten speichere benutze ich NOW()
    Sollte ich lieber das andere benutzen?

    Don't follow me, I run into walls.

  • So also ich hab mal etwas weitergearbeitet.
    So sieht es jetzt aus:

    Klappt alles soweit. Ob es die Daten um 00:00 Uhr löscht werde ich heut nacht sehen. Jetzt hätte ich noch eine Frage. Wie kann ich in dieses Script etwas einbauen, was den Clienten nur alle 3 Minuten auf irgendeinen Link zum Script klicken lässt.
    Also das Script ist folgendes:
    Jeder meine Spieler bekommt einen Link und kann ihn weiterschicken, wenn wer drauf klickt, dann bekommt der Spieler dafür Geld.
    Ich will es jetzt so machen, das der Client der drauf klickt einen Spieler am Tag nur einmal klicken darf, was bisher auch klappt und ich möchte das wenn der Client 2 Verschiedene Spieler hinterienander klicken will mindestens 3 Minuten warten muss. Da weiß ich leide rnicht genau wie ich das in dieses Script einbauen soll.
    In der Datenbank wird jetzt auch der UNIX TIMESTAMP gespeichert mit time().
    Hoffe Ihr könnt mir helfen, danke.

    Don't follow me, I run into walls.

  • Den Unix-Zeitstempel (von dem du scheinbar inzwischen weißt was er ist) kannst Du in MySQL auch direkt schreiben mittels

    SQL
    SELECT UNIX_TIMESTAMP()

    (ist nur ein Beispiel)

    Wenn Du 3 Minutensperren einbauen willst musst Du wieder mit den von mir genannten MySQL-Funktionen arbeiten. DATE_SUB um etwas vom Datum abzuziehen und das ganze mit einem anderen Datum vergleichen ;)

  • Müsste ich nicht in meinem Fall etwas dazuzählen? Sagen wir ich lesen aus ob diese IP schonmal geklickt hat heute, wenn ja dann folgendes:
    Prüfen welcher timestamp gesetzt wurde. Wenn dieser timestamp mehr als 180 Sekunden vorbei ist dann kann die IP wieder klicken wenn nicht dann muss eine Meldung erscheinen vonwegen du kannst erst wieder klicken wenn x Minuten und x sekunden rum sind.
    Müsste doch dann irgendwie so sein:

    PHP
    $endzeit = $eingetragene_zeit + 180;
    if (time() == $endzeit) {
     klickprozess
    } else {
     echo "Erst wieder in 3 Minuten.";
    }

    Liege ich da richtig?
    Wenn ja wie bau ich das am besten in meinen Code ein? ich hab echt schon alles mögliche probiert abe rich bekomms einfach nciht hin... :(
    Wenn ich nciht richtig liege, könnt ihr mir bitte noch etwas weiterhelfen? X(

    EDIT//
    Kann jetzt ersten Test liefern...
    Daten haben sich um 23:59:59 Uhr nicht gelöscht nach abruft des scripts.
    Verwendeter Code:

    PHP
    DELETE FROM hack_ip_sperre WHERE sperre <= UNIX_TIMESTAMP(DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY),'%Y-%m-%d 23:59:59')

    Geprüft über PHPMyAdmin => Fehler:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    DELETE FROM hack_ip_sperre WHERE sperre <= UNIX_TIMESTAMP( DATE_FORMAT( DATE_SUB( NOW( ) ,INTERVAL 1DAY),'%Y-%m-%d 23:59:59'  )

    Don't follow me, I run into walls.

    Einmal editiert, zuletzt von MyXoToD (8. Dezember 2009 um 00:10)