Jump to content

Help with Calendar


blckspder23

Recommended Posts

Hello I was messing around with this calendar and for some reason it likes to skip january when you moved back in the calendar and when you move from december forward it skips january and february and goes right to march.. there must be something wrong with my logic but I cant figure it out.

Here is my code:

 

<?php
class Day {
function Day($inmonth, $month, $day, $year) {
	$this->{'month'} = $month;
	$this->{'day'} = $day;
	$this->{'year'} = $year;
	$this->{'inmonth'} = $inmonth;
	$this->{'number'} = $number;
	$this->{'text'} = "";
	}
function get_day() { return $this->{'day'}; }
function get_month() { return $this->{'month'}; }
function get_year() { return $this->{'year'}; }
function get_inmonth() { return $this->{'inmonth'}; }
function get_number() { return $this->{'number'}; }
function get_text() { return $this->{'text'}; }
function set_text($text) { return $this->{'text'} = $text; }
}

function setCalendarText($days, $m, $d, $y, $text) {
foreach($days as $day) {
	if($day->get_day() == $d && $day->get_month() == $m && $day->get_year() == $y)
	$day->set_text($text);
	}
}

function get_last_month($month, $year) {
$lastmonth = $month - 1;
$lastyear = $year;
if($lastmonth <= 0) {
	$lastmonth = 11; 
	$lastyear -= 1;
	}
return array($lastmonth, $lastyear);
}

function get_next_month($month, $year) {
$nextmonth = $month + 1;
$nextyear = $year;
if($nextmonth > 11) {
	$nextmonth = 0;
	$nextyear += 1;
	}
return array($nextmonth, $nextyear);
}

function makeCalendarDays($month, $year) {
list($nextmonth, $nextyear) = get_next_month($month, $year);
list($lastmonth, $lastyear) = get_last_month($month, $year);

$dimlm = cal_days_in_month(CAL_GREGORIAN, $lastmonth, $lastyear);

$jd = cal_to_jd(CAL_GREGORIAN, $month + 1, 1, $year);
$day = jddayofweek($jd);
$dim = cal_days_in_month(CAL_GREGORIAN, $month + 1, $year);

$days = array();

for($d = 0; $d < $day; $d++)
	$days []= new Day(0, $lastmonth + 1, $dimlm - ($day - $d), $lastyear);

for($d = 1; $d <= $dim; $d++)
	$days []= new Day(1, $month + 1, $d, $year);

$left = ((floor(($day + $dim) /7) +1) *7) - ($day + $dim);
for($d = 0; $d < $left; $d++)
	$days []= new Day(0, $nextmonth + 1, $d+1, $nextyear);
return $days;
}

$today = getdate();

$year = $today['year'];
$month = $today['mon'] - 1;

if($_GET['year']) $year = $_GET['year'];
if($_GET['month']) $month = $_GET['month'];

$days = makeCalendarDays($month, $year);

$test = "all";
$dateTest = 16;
$gen = "<a href=\"index.php\">";
$gen .= "generated";
$gen .= "</a><br />";
if($test == "all") {
setCalendarText(&$days, $month + 1, $dateTest, $year, $gen);
}

setCalendarText(&$days, $month + 1, 5, $year, "Meet<br />Jim");
setCalendarText(&$days, $month + 1, 10, $year, "Meet<br />Sue");


$months = array("January","February","March","April","May","June","July","August","September",
"October","November","December");

$day_names = array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
?>

<div style="width: 600px">
<table class="calendar" width="100%" cellspacing="0" cellpadding="1">
<tr>
	<td colspan="7" class="calender-title" width="13%">
	<?php
	list($nextmonth, $nextyear) = get_next_month($month, $year);
	list($lastmonth, $lastyear) = get_last_month($month, $year);
	?>
	<a href="index.php?year=<?php echo($lastyear);?>&month=<?php echo($lastmonth); ?>"><<</a>
	<?php echo($months[$month]); ?> <?php echo($year); ?>
	<a href="index.php?year=<?php echo($nextyear); ?>&month=<?php echo($nextmonth);
	?>">>></a>
	</td>
</tr>
<tr>
	<?php foreach($day_names as $day) {?>
	<td class="calendar-day-title"><?php echo($day); ?></td>
	<?php } ?>
</tr>
<?php
$p = 0;
foreach($days as $d) {
	if($p == 0) echo ("<tr>");
	$day_style = $d->get_inmonth() ? "calendar-day" : "calendar-outmonth-day";
?>
<td class="<?php echo($day_style); ?>" width="13%">
<div class="calendar-day-number"><?php echo($d->get_day()); ?></div>
<div class="calendar-content"><?php echo($d->get_text()); ?></div>
</td>
<?php
$p += 1;
if($p == 7) $p =0;
}
?>

 

If someone could help I would greatly appreciate it. Thanks.

Link to comment
https://forums.phpfreaks.com/topic/43974-help-with-calendar/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.