Avatar billede zeque Nybegynder
15. juli 2009 - 23:42 Der er 8 kommentarer og
1 løsning

Events i min kalender

Jeg har lavet en lille fin kalender:
http://partytracker.dk/ptcal/
Og har så prøvet at gøre sådan at jeg kan tilføje events med arrays, men jeg kan kun få den til at vise 1 event. Hvordan kan jeg få den til at vise alle oprettede arrays som events?

Her er kildekoden:
http://partytracker.dk/ptcal/index.phps

Tak på forhånd
Avatar billede repox Seniormester
15. juli 2009 - 23:56 #1
Hvis du insisterer på at dit appointments array skal se ud som det gør, bliver du jo nød til at løbe det igennem for hver gang du har en dag. Lidt omsonst. Du kan gøre således istedet:

$appointments["2009-07-05"] = true;
$appointments["2009-07-08"] = true;
$appointments["2009-07-12"] = true;

Og så din if-sætning:
if($year == $appointments[0]['year'] AND $month == $appointments[0]['month'] AND $dayArray['mday'] == $appointments[0]['day']) {

Skifter du ud med:
if(isset($appointments[date("Y-m-d", mktime(0, 0, 0, $month, $dayArray['mday'], $year))])) {
Avatar billede zeque Nybegynder
16. juli 2009 - 00:58 #2
Mange tak :D
Det virker upåklageligt :D

Smid et svar! ;D
Avatar billede zeque Nybegynder
16. juli 2009 - 01:06 #3
Lige et tillægsspørgsmål:
Ved du hvordan jeg kan gøre sådan i de tomme felter viser den henholdsvis de sidste dage fra den forrige måned og de første dage fra den næste måned. (ligesom i Mac applikationen iCal)

Mange tak på forhånd
Avatar billede repox Seniormester
16. juli 2009 - 20:55 #4
Det kommer vist til at kræve lidt mere omlægning af koden.
Idéen er at du skal udregne hvor mange dage du går ind i en almindelig uge, før du får den første dato i den aktuelle måned.

F.eks. i den aktuelle måned, starter du onsdag - dag 3.
Og da mandag i principper er dag nummer 1, skal du jo trække en fra den første dag, hvilket giver du to dage du skal regne tilbage.

Det kan du f.eks. gøre således:
    //denne måned   
    $thisMonth = mktime(0, 0, 0, $month, 1, $year);
    $startDay = date("w", $thisMonth);
    $thisMonth = mktime(0, 0, 0, $month, date("t", $thisMonth), $year);
    $endDay = date("w", $thisMonth);

    //sidste måned
    $lastMonth = mktime(0, 0, 0, $month-1, 1, $year);
    $daysLastMonth = date("t", $lastMonth); //30 dage
   
    $startDay = ($startDay == 0) ? 6 : $startDay - 1;
   
    //de sidste dage inden denne måneds start
    for($i = ($daysLastMonth - $startDay + 1); $i <= $daysLastMonth; $i++)
        echo $i;
       
    echo "<br />";   
   
    //de første dage inden månedens udgang
   
    if($endDay > 0)
    {
        for($i = 1; $i <= (7-$endDay); $i++)
        echo $i;
    }

Så skal du bare have det tænkt ind i din eksisterende kode.
Avatar billede zeque Nybegynder
17. juli 2009 - 00:26 #5
Tak for svaret.

Jeg prøvede lige med din løsning det gav følgende resultat:
http://partytracker.dk/test.php
Som du kan se virker måneden før fint nok, men måneden efter virker ikke som den skal.

Dette er koden:
http://partytracker.dk/test.phps
Avatar billede zeque Nybegynder
17. juli 2009 - 00:41 #6
Jeg har opdaget et problem med events, hvordan kan jeg tilføje en beskrivelse til hver event?
Avatar billede zeque Nybegynder
17. juli 2009 - 01:05 #7
Ups, det virker sku, så bare 1 og 2 som 12, undskyld :D

Men har stadig problemer med events
Avatar billede repox Seniormester
17. juli 2009 - 01:30 #8
Istedet for at skrive $appointments["2009-07-05"] = true; så kan du skrive $appointments["2009-07-05"] = "Her er min event beskrivelse"; og når du så skal skrive den eventbeskrivelse ud, skriver du jo bare:
echo $appointments["2009-07-05"];
Avatar billede zeque Nybegynder
17. juli 2009 - 01:57 #9
Totalt logisk, hvorfor tænkte jeg ikke sådan :P
Mange tusind tak for alt din hjælp :D
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

IT-JOB

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk systemansvarlig / ingeniør inden for taktisk datalink

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret