DATE_SUB funktionen - sletning i database efter X antal tid

Tags:    php

Hey folkens..

Jeg indskriver noget data til en tabel, hvorefter jeg gerne vil have at det bliver slettet igen efter X antal tid. Dette sker på følgende måde:

$sql="INSERT INTO $tbl_name (confirmcode, username, password, name, age, postnr, city, email, homepage, ip, time) VALUES ('$confirmcode', '$newusername', '$newpassword', '$newname', '$newage', '$newpostnr', '$newcity', '$newemail', '$newhomepage', '$newip', NOW())" or die(mysql_error());
$completed = mysql_query($sql);


$sql2="DELETE * FROM $tbl_name WHERE time > DATE_SUB( NOW(), INTERVAL 1 MINUTE )" or die(mysql_error());
$counterdelete = mysql_query($sql2);

Problemet er bare at informationerne ikke bliver slettet i tabellen efter 1 minut som jeg her har prøvet mig frem med.. Hvad gør jeg galt? "time"-feltet i tabellen er sat til datetime og viser korrekt hvornår oplysningerne blev indtastet..



6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Måske har jeg misforstået dig, men hvis du vil have din delete query til at slette rækker der er MERE end 1 minut gamle skal du vende "krokodillenæbet" om:

Fold kodeboks ind/udKode 


Din query sletter alle rækker der er oprettet inden for det sidste minut og lader alle rækker der er ældre end ét minut blive i tabellen...



Nå ja, selvfølgelig.. Det er lige med at huske tilbage på matematik timerne ;)

Men det virker desværre ikke ordenligt.. Den sletter ikke den række automatisk efter 1 minut :/ Er det ikke nok at kalde funktionen som jeg gør der, eller skal man gøre andet?



Det virker somom funktionen slet ikke bliver kaldt.. Har i hvert fald lige prøve at oprette en bruger med usernanme = e, hvor jeg satte delete sql til:

$sql2="DELETE * FROM $tbl_name WHERE username = e" or die(mysql_error());

Der blev rækken nemlig heller ikke slettet



Har lige rettet det til :

$test = mysql_query("DELETE * FROM $tbl_name WHERE username = 'e'")

Så jeg kan teste det helt fra bunden af.. men den gider stadig ikke slette brugeren med username = e :(



Nå.. jeg fik sat nogle debugs på det, og sql forespørgslen bliver registreret nu har jeg fundet frem til:

Koden ser nu sådan her ud:
Fold kodeboks ind/udKode 


Men den sletter stadig ikke automatisk indholdet efter 1 minut.. Den sletter kun indholdet, der er over et minut gammelt, hver gang jeg opretter en ny bruger.. Hvordan gør jeg så at den automatisk gør det hele tiden?



Nå.. Jeg har nu fået diskuteret med et par stykker, og fundet ud af at det ikke er så smart at lade et script køre hele tiden, da det ikke er en "livsnødvendig" ting på siden og det derfor godt kan "belaste" serveren en smule..

I stedet har jeg lavet funktionen i et script for sig, som jeg så kan køre en gang om måneden eller lign så den midlertidige tabel ikke hober sig op ;)



t