Avatar billede tlunde Nybegynder
27. oktober 2008 - 20:38 Der er 15 kommentarer og
3 løsninger

Vise næste events fra min kalender?

Hej,
Jeg har en database der er bygget op som dette:
ID | Navn | Dato | Måned | år
1      Emil      23      5      2007
60     Mette     23     8     1981
4     Søren     24     5     1974

Jeg vil nu gerne have lavet en sql sætning der trækker de næste 10 events ud fra min kalender fra dags dato...Og hvis der kun er eks. 7 events tilbage i år, så skal den gerne tage de 3 næste fra næste år. Det sidste her er dog ikke et krav, men ville være dejligt at have med...

Jeg har gang i en sql sætning der nu ser sådan her ud:
SELECT * FROM kalender WHERE maaned >= '".date("m", time())."' AND dato >= '".date("d", time())."' ORDER BY maaned, dato LIMIT 0,10

Men den fungere ikke helt efter hensigten.

Nogen der kan hjælpe mig??
Avatar billede tlunde Nybegynder
27. oktober 2008 - 20:43 #1
..Og den fulde kalender kan ses her:
http://marieogthomas.dk/index.php?action=calendar
Avatar billede showsource Seniormester
27. oktober 2008 - 20:59 #2
Jeg ville skynde mig at lave et nyt felt i tabellen, som er af typen DATE, og så køre en UPDATE for at få standard dato format lagt ind.
Det er langt nemmere at rode med datoer hvis du bruger standard formatet YY-MM-DD
Avatar billede coderdk Praktikant
27. oktober 2008 - 20:59 #3
Prøv

SELECT *, CONCAT(`år`,`Måned`,`Dato`) AS datoen FROM kalender WHERE datoen >= DATE_FORMAT(NOW(),'%Y%m%d') ORDER BY datoen LIMIT 0,10
Avatar billede tlunde Nybegynder
27. oktober 2008 - 21:08 #4
showsource: Vil du så sætte datoen sammen i et felt og så bare sortere på det? Men giver det ikke samme problem som jeg har nu?

coderdk: Har lige prøvet denne sql:
SELECT *, CONCAT('aar','maaned','dato') AS datoen FROM kalender WHERE datoen >= DATE_FORMAT(NOW(),'%Y%m%d') ORDER BY datoen LIMIT 0,10

Men den siger:
Unknown column 'datoen' in 'where clause'
Avatar billede coderdk Praktikant
27. oktober 2008 - 21:12 #5
bleh ok prøv

SELECT *, CONCAT('aar','maaned','dato') AS datoen FROM kalender HAVING datoen >= DATE_FORMAT(NOW(),'%Y%m%d') ORDER BY datoen LIMIT 0,10
Avatar billede tlunde Nybegynder
27. oktober 2008 - 21:15 #6
coderdk: Nu har jeg fået noget ind der virker, men kan ikke rigtigt finde ud af hvad det er den har hevet ud.

se her: http://marieogthomas.dk/ på forsiden
Avatar billede coderdk Praktikant
27. oktober 2008 - 21:46 #7
Jeg er ikke helt med :) Hvad er problemet?
Avatar billede tlunde Nybegynder
28. oktober 2008 - 07:43 #8
Som du kan se på forsiden af min side, så tager den fint nok 10 entries med ud fra databasen på den sql sætning du lavede, men det er vist ikke helt de 10 rigtige...Det er meget blandede datoer den tager med ud, og ikke de 10 næste datoer ud fra dato der er idag...
Avatar billede coderdk Praktikant
28. oktober 2008 - 09:26 #9
Sikker på, at du har lavet "ORDER BY datoen"? For så vidt jeg kan se, burde det virke :)
Avatar billede tlunde Nybegynder
28. oktober 2008 - 11:42 #10
Jeg har smidt den sql ind som du har givet mig, men kan se på forsiden af min side, at der er entries tilbage fra maj måned, og det er jo helt forkert. Den skulle gerne tage det fra dags dato og så 10 events frem...
Avatar billede showsource Seniormester
28. oktober 2008 - 12:52 #11
Hvis nu du gemte som standard dato,

SELECT * FROM `kalender` WHERE `datofelt` >= CURDATE() ORDER BY `datofelt` ASC LIMIT 0,10
Avatar billede coderdk Praktikant
28. oktober 2008 - 13:00 #12
Aaargh jeg kan se hvad der er galt - du har brugt ' (apostrof) i stedet for ` (backtick), prøv:

SELECT *, CONCAT(aar,maaned,dato) AS datoen FROM kalender HAVING datoen >= DATE_FORMAT(NOW(),'%Y%m%d') ORDER BY datoen LIMIT 0,10
Avatar billede coderdk Praktikant
28. oktober 2008 - 13:01 #13
Men ja, som showsource skriver, så brug standard DATE-format, hvis du ikke har datoer langt tilbage i tiden ;P
Avatar billede tlunde Nybegynder
19. november 2008 - 08:04 #14
har lidt droppet dette igen, men coderdk og showsource, smid lige et svar, og så får i lidt point for jeres hjælp :)
Avatar billede coderdk Praktikant
19. november 2008 - 09:17 #15
ok :)
Avatar billede showsource Seniormester
19. november 2008 - 13:18 #16
ok.
"Dato for langt tilbage i tiden"
er der en begrænsning her ?
Avatar billede coderdk Praktikant
19. november 2008 - 13:40 #17
showsource, Ja, men jeg tror jeg tænkte på unix timestamp ;) Begrænsningerne i DATETIME er nok ikke reelle begrænsninger i denne forbindelse (år 1000-9999) :-D
Avatar billede showsource Seniormester
19. november 2008 - 13:49 #18
Jæ ble' sgu li' nevøs! :O)

Tak for point, iøvrigt!
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
Computerworld tilbyder specialiserede kurser i database-management

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