enormousrodent Posted October 20, 2007 Share Posted October 20, 2007 Hi there, I have been trying to use the code below (found on someone's blog) to create a calendar. What i have problems with is working out how to display the array in an actual calander layout. with the dates & days etc all lineing up. <html> <head> <title></title> </head> <body> <?php function daysInMonths($time){ if(!$time) $time=time(); $month=strftime("%m",$time); $year=strftime("%Y",$time); return cal_days_in_month(CAL_GREGORIAN,$month,$year); } function renderCalendar($time){ if(!$time) $time=time(); //Get Month And Year $month=strftime("%m",$time); $year=strftime("%Y",$time); //Render Current Calendar $dayCount=cal_days_in_month(CAL_GREGORIAN,$month,$year); $calArray=array(); for($day=0;$day<$dayCount;$day++){ $tmNow=mktime(0,0,0,$month,$day+1,$year); $yearWeek=(int)strftime("%W",$tmNow); if($yearWeek>52) $yearWeek-=52; if(!is_array($calArray[$yearWeek])){ $calArray[$yearWeek]=array(); for($tday=0;$tday<7;$tday++){ $calArray[$yearWeek][$tday+1]=false; } } $dayInfo=array( "time" => $tmNow, "mday" => ($day+1), "wday" => (int)strftime("%w",$tmNow), "yday" => (int)strftime("%j",$tmNow) ); if(!$dayInfo['wday']) $dayInfo['wday']=7; $calArray[$yearWeek][$dayInfo['wday']]=$dayInfo; } $calInfo=array(-1=>array(),0=>array(),1=>array()); $calInfo[0]=mktime(0,0,0,$month,1,$year); //Get Next Month $nextmonth=$month+1; $nextyear=$year; if($nextmonth==13){ $nextyear++; $nextmonth-=12; } $calInfo[1]=mktime(0,0,0,$nextmonth,1,$nextyear); //Get Previous Month $prevmonth=$month-1; $prevyear=$year; if($nextmonth==0){ $prevyear--; $prevmonth+=12; } $calInfo[-1]=mktime(0,0,0,$prevmonth,1,$prevyear); //Return Calendar $cal=array('Calendar'=>$calArray,'Info'=>$calInfo); return $cal; } //----------------------------------------------------------------- print_r(renderCalendar(time())); $Calendar = renderCalendar(time()); //Generate for current month $Months = $Calendar['Info']; $Calendar = $Calendar['Calendar']; $PreviousMonth = $Months[-1]; $CurrentMonth = $Months[0]; $NextMonth = $Months[1]; //These are the year weeks from 1-52 //that fit in the month of the calendar. $YearWeeks = array_keys($Calendar); //We parse the $Calendar array by $YearWeeks foreach($YearWeeks as $YearWeek){ $WeekDays = $Calendar[$YearWeek]; // And we further parse the $WeekDays for output foreach($WeekDays as $WeekDay){ $DayTimeStamp = $WeekDay['time']; $MonthDay = $WeekDay['mday']; $YearDay = $WeekDay['yday']; //Keep in mind on next line I loose the $WeekDay initial value //but I assigned all it's children to dedicated variable so who cares? $WeekDay = $WeekDay['wday']; //Here be dragons! Keep reading ... } } ?> </body> </html> If anyone could please help i would be very greatful Rodent Quote Link to comment https://forums.phpfreaks.com/topic/74062-calendar-output/ Share on other sites More sharing options...
enormousrodent Posted October 20, 2007 Author Share Posted October 20, 2007 http://daytona.anyservers.com/~bastide/test.php This is a link to the array output! Thanks Quote Link to comment https://forums.phpfreaks.com/topic/74062-calendar-output/#findComment-373893 Share on other sites More sharing options...
enormousrodent Posted October 20, 2007 Author Share Posted October 20, 2007 *bump anyone? Quote Link to comment https://forums.phpfreaks.com/topic/74062-calendar-output/#findComment-373993 Share on other sites More sharing options...
enormousrodent Posted October 20, 2007 Author Share Posted October 20, 2007 *bump* Quote Link to comment https://forums.phpfreaks.com/topic/74062-calendar-output/#findComment-374286 Share on other sites More sharing options...
enormousrodent Posted October 21, 2007 Author Share Posted October 21, 2007 Anyone? Quote Link to comment https://forums.phpfreaks.com/topic/74062-calendar-output/#findComment-374624 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.