04. december 2007 - 16:22Der er
6 kommentarer og 1 løsning
hente dato som er 5 dage frem men større
Overskriften er måske ikke så tydlig så her en forklaring Jeg er ved at lave ne side som skal hente 1 post fra en mysql database. i databasen er det 1 felt af typen DATETIME. her er datoerne f.eks 07-12-2007 15:00 29-05-2008 19:00 27-01-2008 19:00
5 dage før hver dato skal der så sendes en mail ud til brugerne som påminder dem om denne dato.
jeg har denne select; mysql_query("SELECT *, DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, DATE_FORMAT(dato, '%H:%i') AS tiden FROM kalender WHERE DATE_ADD(dato, INTERVAL 5 DAY) > NOW() AND sendt !="ja"
problemet er at den henter alle poster ud som er ældre end 5 dage. en som har et bud på hvad jeg skal sætte på mere for at klare jobbet. siden bliver kaldt med et cronjob. Jeg har påtænkt at lave et felt i databasen af typen varchar(255) og kalde det sendt med en standard værdi "nej". Når brugerne så er blevet påmindet bliver det felt sat til ja, men det afhjælper ikke at alle datoer bliver hentet ud
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Ja det er en del af løsningen, men lad os sige at disse datoer er i databasen 07-12-2007 15:00 29-05-2008 19:00 27-01-2008 19:00
Så skal der 5 dage før den 07-12-2007 15:00 sendes en mail ud til brugerne. mit cronjob tjekker dog dagligt for om der sakl udsendes en påmindelse, hvilket betyder at med den selct jeg har lavet her mysql_query("SELECT *, DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, DATE_FORMAT(dato, '%H:%i') AS tiden FROM kalender WHERE DATE_ADD(dato, INTERVAL 5 DAY) > NOW() AND sendt !="ja" vil den dagligt sende en mail ud da den altid vil finde en dato som er ældre end fem dage.
derfor skal jeg have lavet noget der gør at den kun finde den dato som er ældre end fem dage, men ikke ældre end 6 dage. jeg har prøvet med mysql_query("SELECT *, DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, DATE_FORMAT(dato, '%H:%i') AS tiden FROM kalender WHERE DATE_ADD(dato, INTERVAL 5 DAY) > NOW() AND !DATE_ADD(dato, INTERVAL 6 DAY) > NOW() AND sendt !="ja"
men det virker ikke. måske gør jeg det på en dum måde, så har du en bedre måde høre jeg det gerne
Jeg ville gøre det på denne måde: 1. Select de aftaler, hvor der fra d.d. og til dato i tabel er 5 dage eller mindre, og hvor der ikke er sendt email: SELECT .....WHERE dato BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 5 DAY)AND sendt !="ja"
2. Send email.
3. Marker i posten, at email er sendt UPDATE.....SET sendt="ja" WHERE dato BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 5 DAY)AND sendt !="ja"
Så er emailen sendt og posten har fået markeringen, at den er sendt.
Hermed et svar. Ved at anvende en periode fra d.d. + 5 dage, sikrer du også, at en post "fanges", hvis cronjobbet springes over 1 dag ved en fejl. Så bliver posten fanget næste dag.
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.