PHP Classes

Calendar problem

Recommend this page to a friend!

      Top level forums  >  PHP Specialists  >  General  >  Calendar problem  
Subject:Calendar problem
Summary:Making linear calnendar for full year
Messages:2
Author:Petri Laakso
Date:2010-06-02 09:07:22
Update:2010-06-12 07:00:49
 

  1. Calendar problem   Reply   Report abuse  
Picture of Petri Laakso Petri Laakso - 2010-06-02 09:09:38
Hi,

Sorry my bad english, if not understanding something I clear case more. I would like to made a calendar which continue automatically when old year end and new year start, how could I made that kind of calendar? This is a linear full year calendar.

I mean:

November 2010
December 2010
January 2011
February 2011
March 2011 and so on...

I have a little bit of code made, but I don't know how the calendar understand when its change year. Here is the code below what I made now.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FI" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi" lang="fi">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />

<title>Linear Calendar</title>
<style type="text/css" media="all">

body {
font-family:"Calibri";
color:#009;
}
.thisDay {
background:#FFC;
color:red;
}
table {
border-collapse:collapse;
border:1px #009 solid;
}
td {
height:20px;
vertical-align:top;
text-align:center;
width:30px;
border:1px #009 solid;
}
th{
height:30px;
width:30px;
}
.dday:hover {
background:#9F0;
border-color:#000;
}
.day6 {
background:#ECECFF;
}
.day7 {
background:#E2E2EB;
}
.kkNimi {
text-align:left;
vertical-align:middle;
}
.kkNimi div {
padding-left:5px;
padding-right:5px;
width:160px;
}
.days{
background:#DDDEDE;
}
</style>
</head>

<body>
<table width="80%" border="1" cellspacing="0" cellpadding="0">
<?php

$password="";
$user="root";
$host="localhost";

$yhteys=mysql_connect($host, $user, $password) or die(mysql_error());
mysql_select_db("lincal",$yhteys) or die(mysql_error());

$DaysinPage = 36;
$dDay = 1;



if (isset($_POST['year'])) {
$year = $_POST['year'];
} else {
$year = date ('Y');
}

function setYear ($year) {
// Check year
if (is_numeric ($year) && $year % 1 == 0 && $year > 2010 && $year < 2038)
$this -> year = $year;
else
$this -> year = date ('Y');
return true;
}

if((isset($_GET['d']))?$dDay=$_GET['d']:$dDay = date("d"));
if((isset($_GET['m']))?$month=$_GET['m']:$month = date("n"));
if((isset($_GET['y']))?$year=$_GET['y']:$year = date("n"));

echo "<tr>\r\n";
echo "<th></th>"; // blank header to compensate for row labels
for ($i=1;$i<=5;$i++) // do this 5 times...
echo "<th>Ma</th><th>Ti</th><th>Ke</th><th>To</th><th>Pe</th><th>La</th><th>Su</th>\r\n";
echo "<th>Ma</th><th>Ti</th>\r\n"; // if the first falls on Sat, we could need 37 boxes
echo "</tr>\r\n";

$months=array();
$months[1]="Jan";
$months[2]='Feb';
$months[3]='Mar';
$months[4]='Apr';
$months[5]='May';
$months[6]='Jun';
$months[7]='Jul';
$months[8]='Aug';
$months[9]='Sep';
$months[10]='Oct';
$months[11]='Nov';
$months[12]="Dec";
$months[13]='Jan';
$months[14]='Feb';
$months[15]='Mar';
$months[16]='Apr';
$months[17]='May';
$months[18]='Jun';
$months[19]='Jul';
$months[20]='Aug';
$months[21]='Sep';
$months[22]='Oct';
$months[23]='Nov';
$months[24]="Dec";


$days_of_month=array();
$days_of_month[1]=31;
if (date("Y")%4==0) $days_of_month[2]=29;
else $days_of_month[2]=28;
$days_of_month[3]=31;
$days_of_month[4]=30;
$days_of_month[5]=31;
$days_of_month[6]=30;
$days_of_month[7]=31;
$days_of_month[8]=31;
$days_of_month[9]=30;
$days_of_month[10]=31;
$days_of_month[11]=30;
$days_of_month[12]=31;

$days_of_month[13] =31;
if (date("Y")%4==0) $days_of_month[14]=29;
else $days_of_month[14]=28;
$days_of_month[15]=31;
$days_of_month[16]=30;
$days_of_month[17]=31;
$days_of_month[18]=30;
$days_of_month[19]=31;
$days_of_month[20]=31;
$days_of_month[21]=30;
$days_of_month[22]=31;
$days_of_month[23]=30;
$days_of_month[24]=31;

$first_of_month=array();
for ($i=6;$i<=17;$i++) // do this for each of the 12 months
{
$timestamp=strtotime($months[$i]." 0 ".$year);
$first_of_month[$i]=date("w",$timestamp); // day of the week as a number (0-6)

}

$year=date("Y");
$dDay=date("j");
$month=date("n");

$next = $year + 1;

$months = array("Tammikuu $year", "Helmikuu $year", "Maaliskuu $year", "Huhtikuu $year", "Toukokuu $year", "Kesäkuu $year", "Heinäkuu $year", "Elokuu $year", "Syyskuu $year", "Lokakuu $year", "Marraskuu $year", "Joulukuu $year", "Tammikuu $next", "Helmikuu $next", "Maaliskuu $next", "Huhtikuu $next", "Toukokuu $next", "Kesäkuu $next", "Heinäkuu $next", "Elokuu $next", "Syyskuu $next", "Lokakuu $next", "Marraskuu $next", "Joulukuu $next");

for($i=6;$i<=17;$i++)
{

echo "<tr><td class='kkNimi'><div>".$months[$i-1]."</div></td>";

if ($i<$month) // if the month is passed...
{
for ($j=1;$j<=$DaysinPage;$j++)
echo "<td>&nbsp;</td>";
} // end if($i<$month)
elseif ($i>$month) // month is in the future
{
$counter=0; // count of up to 37 day blocks
for ($j=1;$j<=$first_of_month[$i];$j++) // number of blank spaces before...
{
echo "<td>&nbsp;</td>";
$counter++; // increment counter
}
for ($j=1;$j<=$days_of_month[$i];$j++) // number of date boxes
{
echo "<td>".$j."</td>";
$counter++;
}
for ($j=1;$j<=($DaysinPage-$counter);$j++) // end boxes
{
echo "<td>&nbsp;</td>";
}
} // end elseif ($i>$month)
else // current month
{
$counter=0;
for ($j=1;$j<=($first_of_month[$i]+$dDay-1);$j++) // preceding blanks
{
echo "<td></td>";
$counter++;
}
echo "<td><font color=\"red\">".$dDay."</font></td>"; // today's day in red
$counter++;
for ($j=$dDay+1;$j<=$days_of_month[$i];$j++) //remaining days of month
{

echo "<td>".$j."</td>";
$counter++;
}
for ($j=1;$j<=($DaysinPage-$counter);$j++) // remaining blanks
{
echo "<td></td>";
}
//echo "\r\n"; // line break
} //end else -- current month
}// end of for($i=1;$i<=12;$i++)
echo "</table>";

function echoSelectDate ($prefix, $date, $disabled = false, $onchange = false) {
$r = '';
$selected = array_reverse (explode ('-', $date));
$selects = array (
array (
'name' => 'D',
'start' => 1,
'end' => 31
),
array (
'name' => 'M',
'start' => 1,
'end' => 12
),
array (
'name' => 'Y',
'start' => 2010,
'end' => 2037
)
);
for ($i = 0; $i < 3; $i ++) {
$r .= '<select name="' . $prefix . $selects[$i]['name'] . '" id="' . $prefix . $selects[$i]['name'] . '" size="1"';
if ($disabled)
$r .= ' disabled="disabled"';
if ($onchange)
$r .= ' onchange="' . $onchange . '"';
$r .= '>';
for ($j = $selects[$i]['start']; $j <= $selects[$i]['end']; $j ++) {
$r .= '<option value="' . $j . '"';
if ($j == $selected[$i])
$r .= ' selected="selected"';
$r .= '>' . $j . '</option>';
}
$r .= '</select>';
}
return $r;
}

mysql_close($yhteys)
?>

</table>
</body>
</html>

Thanks for advance for help.

-Petri

There is 1 reply in this thread, which is not being displayed.
Browsing this forum thread replies is available only to premium subscribers.


Go to the premium subscriptions page to learn how to become a premium subscriber and have full access to this forum.