Avatar billede chriz7913 Nybegynder
06. februar 2009 - 10:58 Der er 5 kommentarer og
1 løsning

Inspiration til PHP kalender

Hej experter
Søger information/ideer til hvordan jeg kan opstille en kalender som denne i PHP. Ikke nogle koder, bare ideer til hvordan man kan sammensætte den med while/for, date m.m.

http://avaz.dk/cal.png

Hilsen Christoffer
Avatar billede psychopixi Nybegynder
06. februar 2009 - 12:24 #1
Jeg lavede for noget tid siden denne kode:
<?php

$month = date('m');
    if ($_GET['month'])
        $month += $_GET['month'];
$year = date('Y');
while ($month > 12){
    $year++;
    $month -= 12;
}
while ($month < 0){
    $year--;
    $month += 12;
}
?>

<div style="width:230px; margin:0; height: 20px; padding: 10px 0 5px 0;">
    <div style="float:left;">
        <a style="text-decoration:none;" href="/test.php?month=<?php echo $_GET['month'] - 1; ?>">Forrige måned</a>
    </div>
    <div style="float:right;">
        <a style="text-decoration:none;" href="/test.php?month=<?php echo $_GET['month'] + 1; ?>">Næste måned</a>
    </div>
</div>

<?php
$date = mktime(0,0,0,$month,1,$year);
$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);

switch ($month){
    case 1: $month_text = "januar"; break;
    case 2: $month_text = "februar"; break;
    case 3: $month_text = "marts"; break;
    case 4: $month_text = "april"; break;
    case 5: $month_text = "maj"; break;
    case 6: $month_text = "juni"; break;
    case 7: $month_text = "juli"; break;
    case 8: $month_text = "august"; break;
    case 9: $month_text = "september"; break;
    case 10: $month_text = "oktober"; break;
    case 11: $month_text = "november"; break;
    case 12: $month_text = "december"; break;
}

$first_day = mktime(0,0,0,$month, 1, $year);

$day_of_week = date('N', $first_day);

$blank = $day_of_week - 1;

$days_in_month = cal_days_in_month(0, $month, $year);
echo "<table class=\"calendar\">";
echo "<tr><th colspan=\"60\"> ".ucfirst($month_text)." - $year </th></tr>";
echo "<tr><td>Man</td><td>Tir</td><td>Ons</td><td>Tors</td><td>Fre</td><td>Lør</td><td>Søn</td></tr>";

$day_count = 1;

echo "<tr>";

while($blank > 0){
    echo "<td></td>";
    $blank--;
    $day_count++;
}

$day_num = 1;

while ($day_num <= $days_in_month){
    if($day_count < 6)
        echo "<td style=\"background-color:#aaffaa;\"><a href=\"index.php?ID=".mktime(0,0,0,$month,$day_num,$year)."\">$day_num</a></td>";
    else
        echo "<td style=\"background-color:#ff8080;\">$day_num</td>";
   
    $day_num++;
    $day_count++;

    if ($day_count > 7 && $day_num <= $days_in_month){
        echo "</tr><tr>";
        $day_count = 1;
    }
}

while ($day_count > 1 && $day_count <= 7){
    echo "<td></td>";
    $day_count++;
}
echo "</tr></table>";
?>

Den validerer både XHTML og CSS, og den skulle være let at ændre til at passe netop dine behov.
Jeg har ikke skrevet kommentarer i koden, men det meste giver vist sig selv - du må lige spørge hvis der er noget specifikt, du har problemer med.
Avatar billede jakobdo Ekspert
06. februar 2009 - 13:05 #2
God og nem kalender kan findes her: http://keithdevens.com/software/php_calendar
Avatar billede chriz7913 Nybegynder
06. februar 2009 - 16:21 #3
Det må blive jakobdo, der får point. Tror koden er god til at få ideer fra.
Kunne desværre ikke bruge din kode psychopixi, da den lige meget hvilken måned man er i, viser at den 1. er en mandag :/
Avatar billede jakobdo Ekspert
06. februar 2009 - 16:31 #4
Svar!
Avatar billede psychopixi Nybegynder
06. februar 2009 - 16:45 #5
#3
På min server vises kalenderen korrekt for hver måned. Men ok:)
Avatar billede jakobdo Ekspert
06. februar 2009 - 17:59 #6
Takker for point.
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