Avatar billede n-emy Nybegynder
22. august 2005 - 18:45 Der er 10 kommentarer og
1 løsning

Udfører en handling efter et bestemt stykke tid?

Hey,

Hvordan kan man ved hjælp af php få et script til at gøre noget hvis en tidsgrænse er overløbet.

Lad os sige at jeg har skrevet en mail den 14/02/2004, og når det så datoen er den 14/04/2004 eller over så sletter den automatisk mailen?
Avatar billede jaw Nybegynder
22. august 2005 - 18:51 #1
Hvordan gemmer du det? I database, så se mit svar her tidligere idag:

http://www.eksperten.dk/spm/642094
Avatar billede jaw Nybegynder
22. august 2005 - 18:55 #2
Hvor du så kan sætte det til:
DELETE FROM tabel WHERE date_add(felt, interval 2 MONTH) < NOW()
...hvis du selvfølgelig gemmer det i database.
Avatar billede n-emy Nybegynder
24. august 2005 - 14:43 #3
Feltet i dben er:
int(255)

og det der bliver indskrevet er:
NOW()
Avatar billede n-emy Nybegynder
24. august 2005 - 14:44 #4
Hvordan gør jeg så?
Avatar billede jaw Nybegynder
24. august 2005 - 14:48 #5
Det du gør er, at så snart det script bliver aktiveret (kørt) slettes indlæg der er mere end 2 måneder gamle. Det kan gøres på forskellige måder, og lidt afhængigt af hvordan dataene bruges.

1. Hvis det f.eks. er indlæg på en side, hvor besøgende kun skal kunne se indlæg der er nyere end 2 måneder er det nok at dit script køres når en bruger kommer ind på siden. Der kan i dette tilfælde dog godt forekomme at være indlæg i databasen, der er mere end 2 måneder gamle, men det skyldes at der ingen brugere har været på siden. Så derfor vil de indlæg forsvinde i samme "sekund" en bruger hopper ind på din side.

2. Du kan også smide scriptet op som et cron-job på en server - i Windows kaldet "Planlagte Opgaver". Her kan man så sætte serveren til at køre scriptet med et fast tidsmellemrum, f.eks. hvert minut. Så vil du aldrig have indlæg (eller hvad det nu drejer sig om) der er mere end 2 måneder og 1 minut gamle :)
Avatar billede n-emy Nybegynder
24. august 2005 - 14:50 #6
Oka:)

Men hvordan skal selve scriptet se ud?
Avatar billede jaw Nybegynder
24. august 2005 - 14:50 #7
Så for at gøre løsning 1, vil jeg gøre noget i stil med:

f.eks. index.php:
<?
//connect
mysql_query("DELETE FROM tabel WHERE date_add(felt, interval 2 MONTH) < NOW()");
?>
//resten af indholdet på din side her.
Avatar billede n-emy Nybegynder
24. august 2005 - 14:52 #8
altså f.eks:

mysql_query("DELETE FROM forum WHERE date_add(indlaeg, interval 2 MONTH) < NOW()");

?
Avatar billede jaw Nybegynder
24. august 2005 - 14:53 #9
Just præcis :) - men prøv det af...
Avatar billede n-emy Nybegynder
24. august 2005 - 19:13 #10
Tak:)

Kan jeg få et svar?:)
Avatar billede jaw Nybegynder
24. august 2005 - 19:26 #11
Det kan du da bestemt :) Og selv tak !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester