Jump to content

PHP Availability Calendar


enormousrodent

Recommended Posts

im trying to find one that i can use to intergrate with a CMS system that i am trying to use.

 

http://daytona.anyservers.com/~bastide/test.php

 

This is a link to an array output, but i do not have the knowledge to turn these unix timestamps into a usable calander format.

 

If you (or anyone) can make sense of it i would be very greatful.

 

Thanks

 

 

Link to comment
Share on other sites

You could use that code to set a value for each day. Basically that code is setting an array for week 40 to week 44 in the year

 

then you can recal that array an say you want to know the day of the month the first day of week 44 is you can simply echo $array[44][1][mday].

Link to comment
Share on other sites

Honestly, it confuses the hell out of me.  The Logic behind turning that into a calendar confuses me..

 

That is why i am asking for help..Only being honest...thanks for the links btw

 

Here is the code that produces the array.

 

<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;
}
//-----------------------------------------------------------------
?>

<pre><?
print_r(renderCalendar(time()));
?>
</pre>
<?
$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>

Link to comment
Share on other sites

  • 2 years later...

I'm looking at something similar to:

 

http://www.shared-house.com/login.php?erreur=intru&langue=en

 

Where you have a simple calendar showing css style in different colors as available, booked or pending booking.  You can also opt to add a color to indicate whether high season, mid season or low season.  There must be a back-end form to set pending/booked dates only the owner can change.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.