<?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.
<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:
hvor du ønsker at placere kalenderen.