Avatar billede ken9 Nybegynder
05. marts 2009 - 19:34 Der er 9 kommentarer og
1 løsning

Diverse kalenderfunktioner

Hej eksperter!

Jeg er ved at lave et system til bordreservationer.

Jeg vil gerne have at den lister alle uger hele året i en dropdown menu, og når man så klikker på en uge viser den start-dato i ugen samt slut-dato (altså mandag d. xx/xx - søndag d. xx/xx).

Der skal så være en tabel med celler for hver dag i ugen, med man (xx/xx), tir (xx/xx), ons (xx/xx), hvor man nedenfor kan se reserverede borde den pågældende dag.

Min helt store udfordring er ugesystemet her. Jeg håber der er nogen derude som kan hjælpe mig på vej :-)

Evt. en php funktion der kører alle årets uger i en løkke + en php funktion der kan vise dato mandag, tirsdag, onsdag, torsdag, fredag, lørdag og søndag når man har valgt uge.

På forhånd MANGE tak :-)
Avatar billede psychopixi Nybegynder
05. marts 2009 - 19:43 #1
Det er forholdsvist let at lave en løkke der tager alle uger i et år ved at benytte en blanding af date- og mktime-funktionen.
http://dk.php.net/manual/en/function.date.php
http://dk2.php.net/manual/en/function.mktime.php

I maketime kan du blot lægge 7 til dagen, og med date kan du udskrive uge-nummer ved at bruge date("W")
Avatar billede ken9 Nybegynder
05. marts 2009 - 19:46 #2
Men jeg vil ikke have den viser de næste 7 dage fra pågældende dato, men de 7 dage der er i hele den uge man har valgt.

Så det virker vel ikke at lægge 7 dage til datoen?
Avatar billede psychopixi Nybegynder
05. marts 2009 - 20:02 #3
Ok - simpelt eksempel følger:
for($x=0;$x<=52;$x++){
echo date("<b>\u\g\e W:</b> d/m/Y - ",mktime(0,0,0,1,$x*7,date("Y"))) . date("d/m/Y",mktime(0,0,0,1,($x+1)*7,date("Y"))) . "<br/>";
}
Avatar billede ken9 Nybegynder
05. marts 2009 - 20:19 #4
Sådan! TAK!

Nu ser min kode sådan ud:

<form name="form" id="form">
<select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">

<?php for($x=0;$x<=52;$x++){ ?>

<option value="URL"><?php echo date("<b>\u\g\e W:</b> d/m/Y - ",mktime(0,0,0,1,$x*7,date("Y"))) . date("d/m/Y",mktime(0,0,0,1,($x+1)*7,date("Y"))) . "<br/>"; ?></option>

<?php } ?>

</select>
</form>

Kan du hjælpe mig med at gøre så det altid er den pågældende uge som står som selected i options når man lander på siden?

Sådan ser det ud: http://kenni.eu/preview.JPG

Jeg vil gerne have at der står en dato ved hver overskrift i tabellen også. Er det noget der kan lade sig gøre? Altså efter man har valgt uge :-)
Avatar billede ken9 Nybegynder
05. marts 2009 - 20:21 #5
Og lige en ting mere.. Vil ugerne i år 2010 automatisk blive listet når året er omme?
Avatar billede psychopixi Nybegynder
05. marts 2009 - 21:23 #6
Ja - men du skal være opmærksom på at det er forskælligt om der er 52 eller 53 uger i et år.

Du kan løse dette "problem" med en kode i stil med:
for($x=0;date("Y") >= date("Y",mktime(0,0,0,1,$x*7,date("Y")));$x++){
echo date("<b>\u\g\e W:</b> d/m/Y - ",mktime(0,0,0,1,$x*7,date("Y"))) . date("d/m/Y",mktime(0,0,0,1,($x+1)*7,date("Y"))) . "<br/>";
}
Avatar billede ken9 Nybegynder
05. marts 2009 - 22:19 #7
Super :-) Tak!

Har du nogen løsning i ærmet på min anden forespørgsel?
Avatar billede psychopixi Nybegynder
06. marts 2009 - 08:33 #8
Det kommer en smule an på, helt præcist hvordan du genererer tabellen.

Hvis den genereres via PHP, kan du blot sende ugenummeret via en GET-variabel, hvorved du bliver i stand til at udregne alle datoerne, på samme måde som i mit eksempel.
Avatar billede ken9 Nybegynder
06. marts 2009 - 17:25 #9
Smid et svar :-) og tak!
Avatar billede psychopixi Nybegynder
06. marts 2009 - 17:32 #10
Hermed svar:)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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