Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Rows aus mysql-Bank nach zeit loeschen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Rows aus mysql-Bank nach zeit loeschen


 
dESIGN
23-01-2002, 11:24 
 
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!

 
JoelH
23-01-2002, 11:28 
 
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

$zeitraum = time()-3600;
$query="DELETE FROM tab WHERE timestampspalte < ".$zeitraum;

 
MoRtAlAn
23-01-2002, 11:29 
 
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

 
dESIGN
23-01-2002, 11:37 
 
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]

 
MelloPie
23-01-2002, 22:47 
 
machs mit nem update

 
BrainBug
24-01-2002, 08:46 
 
$zeitraum = time()-3600;
$query="UPDATE tab set ip=NULL WHERE timestampspalte < ".$zeitraum;

außerdem verschiebe ich mal das Thema zum Forum SQL

 
dESIGN
24-01-2002, 10:34 
 
ok, das funzt sehr gut, Danke!

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

 
BrainBug
24-01-2002, 10:43 
 
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.

 
dESIGN
24-01-2002, 16:21 
 
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

 
BrainBug
24-01-2002, 16:45 
 
sollte ein INT-Feld mit min. Größe 16 oder ein Typ timestamp -> vielleicht ist dein Feld zu klein

 
dESIGN
24-01-2002, 17:17 
 
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*


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:56 Uhr.