Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 2386
Hei.

Holder på å lage en kalenderapplikasjon der man bl.a. kan få oversikt over gjøremål uke for uke.
Problemet er å finne en effektiv måte å løse dette på.

Målet er å vise kalenderen på følgende måte:
....... | Mandag | Tirsdag | Onsdag | Torsdag | Fredag | Lørdag | Søndag
08.00 |Gym......|...........|Dansing..|.............|............| ...........|..........
09.00 |...........|Fisking...|Dansing..|.............|............ |...........|..........
10.00 |Opera....|...........|...........|..............|.......... ..|...........|..........
11.00 |...........|...........|............|..............|....... .....|...........|..........
12.00 |...........|...........|............|..............|....... .....|...........|..........
13.00 |...........|...........|............|..............|....... .....|...........|..........
14.00 |...........|...........|............|..............|....... .....|...........|..........
15.00 |...........|...........|............|..............|....... .....|...........|..........
16.00 |...........|...........|............|..............|....... .....|...........|..........
Vis hele sitatet...
Aktiviteten er lagret i DB som php-timestamp. Dvs. at tidspunkt der det ikke aktivitet har ingen oppføring i DB.
Slik jeg gjør det nå så henter jeg ut oppføringene fra DB sortert etter timestamp ved å angi timestamp for mandag kl. 00.00 til søndag 23.59.

Det store problemet her at hvis dette skrives ut til <table> så må verdiene skrives ut radvis og ikke kolonnevis pga. at det er slik du bygger en <table>.
Da må jeg først sammenligne timestamp for mandag kl. 08.00 med resultat fra spørringen, så tirsdag kl 08.00 osv. helt til søndag. Så begynner man på nytt igjen mandag 09.00, tirsdag osv.
Men da jeg har hentet ut dataene sortert så ligger aktivitetene i denne rekkefølgen:
Mandag: Gym
Mandag: Opera
Tirsdag: Fisking
Onsdag: Dansing
Onsdag: Dansing

Hvordan er den beste måten å løse dette på?
Trigonoceps occipita
vidarlo's Avatar
Donor
Bruke to felt i mysql - et med datatype date og et med datatype time. Da vil du kunne be om å få alle mellom 1.6.2010 og 7.6.2010 etc etc.

Mykje meir elegant imho
Sist endret av vidarlo; 10. november 2009 kl. 16:56.
Trådstarter
8 0
Takk for svar.

Men hvordan løser dette problemet?
Mener du at man skal lage flere spørringer der man først spør etter alle aktiviteter kl.08:00 fra 1.6.2010-7.6.2010, så neste spørring kl.09:00 fra 1.6.2010 - 7.6.2010 osv?
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av azidops Vis innlegg
Takk for svar.

Men hvordan løser dette problemet?
Mener du at man skal lage flere spørringer der man først spør etter alle aktiviteter kl.08:00 fra 1.6.2010-7.6.2010, så neste spørring kl.09:00 fra 1.6.2010 - 7.6.2010 osv?
Vis hele sitatet...
Du kan velge alle fra 1.6.2010 til 7.6.2010, og deretter sortere etter klokkeslett f.eks. Difor ser eg for meg at det er /enklast/ å dele det i to felt i mysql, sjølv om det nok kan gjerast med eitt felt og mysql sine funksjoner for tidsbehandling.

order-funksjonen i mysql sorterer rett iht. tid om datatypen er time.
Trådstarter
8 0
Ok, da forstår (tror) jeg hva du mener. Men jeg kan allerede sortere resultatene i MySQL fordi aktivitetene ligger inne med PHP-timestamp (int). Men problemet oppstår når jeg skal trekke ut resultatet fra arrayen ( $result = mysql_query($query) ).
Da er det problematisk at resultatene ligger sortert fordi en <table> blir opprettet slik:
----------> (linjeskift)
----------> (linjeskift)
----------> (linjeskift)
Vis hele sitatet...
Da kommer tirsdag kl 08:00 før mandag kl. 09:00 mens i resultatsettet ligger resultatet kanskje slik:
Mandag kl 08:00
Mandag kl 09:00
Mandag kl 12:00
Tirsdag kl 09:00
Tirsdag kl 13:00
osv.

Jeg vet bare hvordan man kan hente ut data fra mysql_query($query) i sortert rekkefølge. Finnes det noen måter å søke i et resultatsett slik at man kan hente ut data usortert?
Trigonoceps occipita
vidarlo's Avatar
Donor
Nei, du har ikkje forstått poenget mitt. Sjå for deg følgjande spørring:
"SELECT * FROM `aktiviteter` ORDER BY `klokkeslett`,`dato`"

Den vil sortere slik at du får:
Mandag kl 08:00
Mandag kl 09:00
Tirsdag kl 09:00
Mandag kl 12:00
Tirsdag kl 13:00
Sist endret av vidarlo; 10. november 2009 kl. 17:51.
Hey
Jeg har et TOPP program du bør prøve, det var med i hjemme pc en gang..
Det heter EfficientPIM, bruker det mye til å legge inn lekser og sånn
Trådstarter
8 0
Sitat av slashdot Vis innlegg
Nei, du har ikkje forstått poenget mitt. Sjå for deg følgjande spørring:
"SELECT * FROM `aktiviteter` ORDER BY `klokkeslett`,`dato`"

Den vil sortere slik at du får:
Mandag kl 08:00
Mandag kl 09:00
Tirsdag kl 09:00
Mandag kl 12:00
Tirsdag kl 13:00
Vis hele sitatet...
Da forstår jeg. Det er nok den beste løsningen. Hadde håpet å unngå det siden jeg allerede har laget andre funksjoner som baserer seg på timestamp-løsningen, men på sikt vil det likevel lønne seg å gjøre endring i databasen.

Takk for svar!

Epilog:

Jeg fant en måte å unngå å gjøre endringer i DB-strukturen. Jeg har lagret start og slutt-tidspunkt som Unix timestamp og dermed kunne jeg bruke funksjonen FROM_UNIXTIME() til å kjøre den spørringen som Slashdot foreslo.

Kode

SELECT FROM_UNIXTIME( `start` , '%H:%i:' ) AS klokken, FROM_UNIXTIME( `start` , '%Y-%m-%d' ) AS dato
FROM `meeting`
ORDER BY FROM_UNIXTIME( `start` , '%H:%i:' ) , FROM_UNIXTIME( `start` , '%Y-%m-%d' )