Kalender:

Kalender i php/JavaScript

calendar.php
<?php
//hent årstallet
  $thisyear=date('Y');
  if (!$year) {
    $year = date('Y');
  }

//hent dato og månednr
  $dag = date('j');
  $maaned = date('n');

//arrays med navnene på måneder og dage samt antallet af dage i månederne
  $navn = array("jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec");
  $dayname = array("Søn","Man","Tir","Ons","Tor","Fre","Lør");
  $dage = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

//opret tabel til kalenderen
  echo "<table ><tr>";

//så begynder løkken for hver måned
  for ($j=0; $j<12; $j++)  {
    $maanednavn = $j;
//hent day-of-week på den 1. i måneden
    $start = date('w',mktime(0,0,0,$j+1,1,$year));

//juster længden af februar hvis skudår
    if (($year % 4 == 0 && $year % 100 !=0) || $year % 400 == 0) $dage[1] = 29; else $dage[1] = 28;

//skriv måned og årstal
    echo "<td > \n";
    echo "<table> \n";
    echo "<tr><th><<<</th><th colspan=5> \n";
    printf ($navn[$maanednavn] . "<a href=\"%s?year=%s\" title=\"Dagbog for ".($year-1)."\"> << </a>", $PHP_SELF, $year-1);

    echo $year;
    printf ("<a href=\"%s?year=%s\" title=\"Dagbog for ".($year+1)."\"> >> </a>", $PHP_SELF, $year+1);
    echo "</th> \n";

    echo "<th><a href=\"#\">>>></a></th></tr> \n";
    echo "<tr> \n";

//skriv ugedagene
    for ($i=0; $i<=6; $i++) {
      echo "<th><strong>".$dayname[$i]."</strong></th> ";
    }
    echo "</tr> \n";
    echo "<tr> ";

//juster med tomme celler før den 1.
    $celle = 0;
    for ($i=0; $i<$start; $i++) {
      echo "<td class='empty'></td> ";
      $celle++; }

//skriv datoerne
    for ($i=1; $i<=$dage[$maanednavn]; $i++) {

//speciel klasse ved dags dato
      if (($dag == $i) && ($maaned == $j+1) && ($thisyear==$year))
      echo "<td class='today'>";
      else
      echo "<td>";

      //her kommer linket
      $k=$j+1;
      $link=0;

//Find ud af om der skal være et link
      $result = mysql_query("SELECT * FROM diary WHERE 1 AND day ='$i' AND month ='$k' AND year = '$year' LIMIT 0,1");
      while ($myrow = mysql_fetch_array($result)){
      $link=1;

      ?>

//link til at oprette nyt vindue i JavaScript
      <script type="text/javascript">
        document.write("<a href=javascript:nytVindue('linktilside.htm')>"+<?php echo $i?>+"<\/a>");
      </script>
//Link hvis JavaScript er slået fra
      <noscript>
        <a href="linktilside.htm"><?php echo $i?></a>
      </noscript>
<?php
      }
      if ($link==0) {
      echo $i;}
      // her slutter linket

      if (($dag == $i) && ($maaned == $j+1) && ($thisyear==$year))
      {
        echo "";
      }
      echo "</td> \n";
      $celle++;
//Ny linje hvis man er kommet til søndag og måneden ikke er slut endnu
      if (($celle == 7) && ($i<$dage[$maanednavn]))
      { echo "</tr><tr> \n";
        $celle = 0; }
    }
    echo "</tr></table> \n";
    echo "</td> \n";

//Ny række efter april og august
    if (($j == 3) || ($j ==7))
    echo "</tr><tr > \n";
  }
  echo "</tr></table> \n";
?>

For at benytte denne kode, skal du blot lægge scriptet et passende sted, og kalde det med

<?php include("[sti]/calendar.php");?>

hvor du ønsker at placere kalenderen.
[sti] er stien til scriptet.


Kalender i JavaScript

calendar.js
<script type="text/javascript"><!-- shields up!
function nytVindue(filnavn) {
 KortVindue=window.open(filnavn,'filnavn','scrollbars=yes, resizable=no,width=400,height=400')
}
// down shields! -->
</script>
<script type="text/javascript"><

// arrays med navnene på månederne og dagene
var navn = new Array("jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec");
var dayname = new Array("Søn","Man","Tir","Ons","Tor","Fre","Lør");

function kalender(antal){
//Henter år, måned og dat
  i_dag = new Date();
  dag = i_dag.getDate();
  maaned = i_dag.getMonth();
  aar = i_dag.getFullYear();

//array med antallet af dage i månederne
  var dage = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

//Påbegynd kalenderen
  document.write("<table><tr>");

//Så begynder løkken for hver enkelt måned
  for (j=0; j<antal; j++)  {
    maanednavn = j;

//hent day-of-week for den 1. i måneden
    i_dag = new Date(aar,j,1);
    start = i_dag.getDay();

//Juster længden af februar hvis skudår
    if ((aar % 4 == 0 && aar % 100 !=0) || aar % 400 == 0) dage[1] = 29; else dage[1] = 28;

//skriv måned og årstal
    document.write("<td>");
    document.write("<table>");
    document.write("<tr><th colspan=7>");
    document.write(navn[maanednavn] + " " + aar +"<\/th><\/tr>");
    document.write("<b><tr>")

//Skriv ugedagene
    for (i=0; i<=6; i++) {
      document.write("<th>"+dayname[i]+"<\/th>");
    }
    document.write("<\/tr>");
    document.write("<tr>");
    var celle = 0;

//juster for den første i måneden
    for (i=0; i<start; i++) {
      document.write("<td> <\/td>");
      celle++;
    }

//skriv datoerne
    for (i=1; i<=dage[maanednavn]; i++) {
//speciel class hvis dags dato
      if ((dag == i) && (maaned == j))
        document.write("<TD class='today'>");
      else
        document.write("<TD>");
      boollink = 0;
      //for (k in moede) {
      //opdel= moede[k].split("-")
      //if ((opdel[2] == i) && (opdel[1]==j+1) && (opdel[0]==aar)) {
        //link=opdel[0]+opdel[1]+opdel[2]+'.htm';

//Link i JavaScript, der åbner nyt vindue
        document.write("<a href=javascript:nytVindue('[linktilside]')>"+i+"<\/a>");
        boollink=1;
      }
     }
     if (boollink == 0)
     document.write(i);
     if ((dag == i) && (maaned == j))

     document.write("");
     document.write("<\/td>");
     celle++;
//Ny linje hvis man er kommet til søndag og måneden ikke er slut endnu
     if (celle == 7){
       document.write("<\/tr><tr>");
       celle = 0;
     }
    }
    document.write("<tr><\/table>");
    document.write("<\/td>");

//Ny linje efter april og august
    if ((j == 3) || (j ==7))
    document.write("<\/tr><tr>");
  }
  document.write("<\/tr><\/table>");
}
kalender(2006);                            //2006 udskiftes med det ønskede år

</script>

Scriptet kan enten lægges ind på hver enkelt side, eller også kan det lægges centralt, og så kaldes med:

<script type="text/javascript" src="[sti]/calendar.js"></script>

hvor du ønsker at placere kalenderen.

Kalender