Avatar billede hanne_e Nybegynder
02. december 2004 - 00:48 Der er 7 kommentarer og
1 løsning

Hvordan genereres et ugeskema dynamisk udfra dags dato?

Mit tidligere spørgsmål var vist lidt for kompliceret til at nogle ville forsøge sig. (http://eksperten.dk/spm/566644)

Her kommer en enklere udgave...

Jeg bruger nedenstående funktioner til at finde ud af hvilket tidspunkt det er.


$start=mktime(12, 0, 0, $month, $day, $year);

$uge = date("W");

Jeg kunne godt tænke mig lidt hjælp til at få udskrevet et skema.
Den skal altså tage dags dato og så vise mandag til fredag i pågældende uge.


Dog skal der forrest stå tid og modul - så i sidste ende skal det blive noget i retning af det her:



Uge 49

Modul     Klokken     mandag d. 29/11  .. .. .. fredag d. 3/12
1        9-10.30
2    11-12.30
3    13-14.30
4    15-16.30

<<forrige uge        næste uge>>



det er hensigten at de enkelte celler senere skal udfyldes.


Håber nogen vil hjælpe.
Avatar billede jakoba Nybegynder
02. december 2004 - 01:17 #1
$start=mktime(12, 0, 0, $month, $day, $year);

$uge = date("W", $start);        // ugenummer
while ( $uge == ($temp = date("W", $start-(24*60*60) )) ) {
    $start = $start-(24*60*60);  // find første dag i ugen
}

echo "<br>Uge $uge<br>";
echo "Modul  Klokken  ";
$ugedage = array( "mandag", "tirsdag", "onsdag", "torsdag", "fredag" );
for ( $i = 0; $i<5; $i++ ) {
    echo $ugedage[$i] ." d." .date( "j/n", $start +$i*(24*60*60) ) ."  ";
        // nok bedre at bruge en html tabel
}
... etc

mvh JakobA
Avatar billede hanne_e Nybegynder
02. december 2004 - 01:20 #2
Hurra - én der reagerede... Tak!

Jeg prøver lige din løsning.
Avatar billede hanne_e Nybegynder
02. december 2004 - 01:49 #3
det lader jo til at virke :-)

er du sød hurtigt at forklare hvordan denne her:

while ( $uge == ($temp = date("W", $start-(24*60*60) )) ) {
            $start = $start-(24*60*60); 
}

egentlig finder den første dag i ugen?
24 * 60 * 60 er blot antal sekunder pr døgn eller hur?

og hvis du har en ide til at få vist forrige/næste uge ville det være et hit - Men du har allerede hjulpet meget, så hvis du lægger et svar får du fluks points!

(Eller rettere i morgen for nu er det vist sengetid)

Godnat!
Avatar billede hanne_e Nybegynder
02. december 2004 - 01:51 #4
hov med "hurtigt" mener jeg jo ikke "nu" - jeg mener bare, du ikke skal bruge 100 år på det altså... :-)
Avatar billede jakoba Nybegynder
02. december 2004 - 02:08 #5
netop, 24*60*60  er een dag

og  7*24*60*60  er en uge  den kan du bruge til at flytte over i forrige/næste uge.

det while-sætningen gør er at gå tilbage dag for dag, sålangt vi kan uden at komme ind i forrige uge. ugen starter med mandag så det er altså "mandag denne uge".

i php-code sprog er det en lidt 'snavset' måde at programmere en while sætning, betingelsen er sværere at forstå end den burde være.

while ( $uge                      // variabel med ugenummer
            ==                  // == sammenligner for lighed med
                ( $temp          // hele paretesen har den værdi der bliver gevet til $temp
                        =        // = assigner en værdi
                          date("W", $start-(24*60*60) )  // som er dagen før
                )
      ) {
          // så vis 'dagen før' har samme ugenummer går vi en dag tilbage
            $start = $start - (24*60*60);
}

faktisk er det med $temp en bøf fra min side, vi bruger jo ikke den værdi til nogetsomhelst bagefter, så det er dumt at lægge den i en variabel.

det virker præcis ligesågod med bare:
    while ( $uge == date( "W", $start-(24*60*60) ) ) {
            $start = $start-(24*60*60);
    }
og det er også mere gennemskuelig.

mvh JakobA
Avatar billede hanne_e Nybegynder
02. december 2004 - 21:40 #6
okay- det giver lidt mere mening nu - 1000 tak.

Hvis du lægger et svar får du points :-)
Avatar billede jakoba Nybegynder
02. december 2004 - 21:51 #7
ok takker
Avatar billede hanne_e Nybegynder
02. december 2004 - 23:54 #8
selvtakker :-)
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