MySQL-Einträge nach vorgegebener Zeit löschen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
automatisch gel
bauen
epoche
gel
gen
gest
kleines beispiel
minus
quellen
sekunde
spalten
sperren
tabelle
uhr
vergehen
vielen dank
zeile
zeitspanne
zeitstempel
-
moinsen Leude
ich hab ne IP-Sperre mit MySQL gemacht und m?chte gerne, dass die nach ner gewissen Zeit wieder aufgehoben wird. ich hab also immer die IP in einer zeile und dann soll das nach ca. 6 Stunden wieder automatisch gel?scht werden. Hat einer nen Peil, wie das geht?
Ich bedank mich schonmal im Vorraus. ^^ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
aha, ok... also wenn ich das script rischtisch kappiert hab, pr?ft es bei jeder aktivirung die Spalte time / Zeit pder sonst was... aber wie bestimme ich dann die Zeitspanne? ich brauche etwas mehr erkl?rung sonst wirds leider nix...
-
mach noch ne Spalte "time" dazu.
Wenn du ne IP einf?gest dann f?ge da den Wert time() ein.
Und dann bau das in dein Script ein:
mysql_query("DELETE FROM tabelle WHERE time < (time()-21600)");
In der Spalte time wird der unix-timestamp eingetragen das sind die sekunden seit dem ersten januar 1970 00:00! Alles was die sekunden time()-21600) als 21600 sek in der vergangenheit hat wird gekillt! -
ich brauche etwas mehr erkl?rung sonst wirds leider nix...
Kannst du haben:
Mit time() kann man sich den aktuellen UNIX-Zeitstempel zur?ckgeben lassen.
Dieser Zeitstempel enth?lt die Anzahl der Sekunden seit Beginn der Unix-Epoche
(01.01.1970 um 00:00:00 Uhr).
Quelle: http://www.selfphp.de/funktionsreferenz/datums_und_zeit_funktionen/time.php
Das hei?t also, dass du mit time() eine Zahl zur?ckbekommst, die sich jede Sekunde um 1 erh?ht.
6 Stunden = 21600 Sekunden
Wenn du immer beim Eintragen der Ip in die MySQL-Tabelle den zu dem Zeitpunkt aktuellen Wert von time() dazuschreibst und 6 Stunden vergehen l?sst, dann ist der Wert in der Tabelle gleich dem Wert von time() nach 6 Stunden minus die 21600 Sekunden.
Wenn nun der Wert von time() noch weiter steigt wird der Wert von time()-21600 noch viel gr??er als der Wert in der Tabelle bzw. der Wert in der Tabelle ist kleiner, deshalb "DELETE FROM tabellenname WHERE time < (time()-21600)" ... und das musst du dann nurnoch ?ber mysql_query ausf?hren, denn der Befehl "DELETE" l?scht Eintr?ge aus MySQL-Tabellen. -
ok... vielen Dank. ^^
jetzt habisch es geschnallt...
und da wir scon beim L?schen von eintr?gen sind... wei? einer, wie SQL-Eintr?gegel?sct werden, wenn man das Fenster schlie?t?
ich mach mal ein kleines Beispiel... Seite1 zeigt alle Eintr?ge in der Datenbank an, die Seite2 (von mir aus ein Chat) erzeigt hat... wenn ich Seite2 nun sclie?e, wird der Wert in der Datenbank wieder gel?scht. Dabei soll nur der Wert gel?scht werden, den ich mit dem Aufrufen der Seite erstellt abe... alle anderen Werte, die andere durch das aufrufen von seite2 erstellt haben, sollen bleiben. seite 1 aktualisiert sic ja dann automatisch.
Das habe ich schonmal gefragt, aber iwie kam da keine Antwort drauf... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage