webForumDet fria alternativet

Hämta datum för att fylla en kalender

4 svar · 252 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#1

Hej hopp!

Jag håller på att meckar med en kalender där jag vill kunna se vad som händer en viss veckodag.

Kalendern vill jag ska se ut som:

Vecka 41 (+) (-)

Måndag 08:00 - 20:00 Händelse1
19:00 - 21:00 Händelse 2
Tisdag
Onsdag
Torsdag 03:00 - 03:32 jkljjkljkjk
Fredag
Lördag
Söndag

I min databas har jag idag start_date och end_date men det gör jag gärna om om det går att göra på något smartare sätt.

Jag antar att det enklaste sättet är att göra en sql fråga per dag som hämtar alla poster för vald dag sorterat på start_date.

Några tips på hur jag ska designa det hela och hur jag gör en sql fråga som passar ?

:l

mattiasnordinMedlem sedan maj 20012 080 inlägg
#2

Hmmm... Jag finner inte någon smidig lösning på detta.

Det är enkelt så länge jag låter en händelse vara mindre än 24 timmar. Men hur rackarns ska jag göra för händesler som är längre än ett dygn? Har svårt att visa det på ett vättigt sätt i gränssnittet.

LarsGMedlem sedan dec. 200012 464 inlägg
#3
'Beräkna datumet för första dagen i veckan
First = ...
Last = first + 6
sql = "select * from kalender " & _
"where start_date between #" _
& First & "# and #" & last & "#" _
& " or end_date between #" _
& First & "# and #" & last & "#"

Då får du alla händelser som antigen börjar eller slutar inom aktuell vecka.

mattiasnordinMedlem sedan maj 20012 080 inlägg
#4

Wow... ska testa.

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Vänta en sekund

sql = "select * from kalender " & _
"where start_date between #" _
& First & "# and #" & last & "#" _
& " or end_date between #" _
& First & "# and #" & last & "#" _
& " or #" & first & "# between start_date and end_date " _
& " or #" & last & "# between start_date and end_date "
129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)