blckspder23 Posted March 23, 2007 Share Posted March 23, 2007 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.