'
PHP: Lage ukekalender - Trenger forslag til problemløsning
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: Sitat:
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å? |
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 ;) |
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? |
Sitat:
order-funksjonen i mysql sorterer rett iht. tid om datatypen er time. |
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: Sitat:
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? |
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 |
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 :) |
Sitat:
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 |
Alle tidspunkt er GMT +2. Klokken er nå 20:06. |