Link to home
Start Free TrialLog in
Avatar of katlees
katleesFlag for United States of America

asked on

Change calendar from monthly to weekly

Roads - You helped with this code - I want to change it to a weekly view with the heading part showing  the days of that week so May 1st - May 7th instead of May 2011 with the next and previous options... Can you help again?
<?php
 
$nextm=$_GET['month'];
$nexty=$_GET['year'];
 

require_once("includes/db_login.inc");
 
if($nextm == "13")
{
        $nextm=1;
        $nexty++;
}
 
if($nextm == "0")
{
        $nextm=12;
        $nexty--;
}
 
//This gets today's date
$date =time () ;
 
//This puts the day, month, and year in seperate variables
$day = date('d', $date) ;
 
If ($nextm != ""){
        $month=$nextm;
        
}
else{
$month = date('m', $date) ;
 
}
$month2  = date('m', $date);
$minmonth=$month-1;
$maxmonth=$month+1;
If ($nexty != "") {
        $year=$nexty;
}
else{
$year = date('Y', $date) ;
}
$year2 = date('Y', $date) ;
//Here we generate the first day of the month
$first_day = mktime(0,0,0,$month, 1, $year) ;
 
//This gets us the month name
$title = date('F', $first_day) ; 
//Here we find out what day of the week the first day of the month falls on
$day_of_week = date('D', $first_day) ;
 
//Once we know what day of the week it falls on, we know how many blank days occure before it. If the first day of the week is a Sunday then it would be zero
switch($day_of_week){
case "Sun": $blank = 0; break;
case "Mon": $blank = 1; break;
case "Tue": $blank = 2; break;
case "Wed": $blank = 3; break;
case "Thu": $blank = 4; break;
case "Fri": $blank = 5; break;
case "Sat": $blank = 6; break;
}
 
//We then determine how many days are in the current month
$days_in_month = cal_days_in_month(0, $month, $year) ; 
//Here we start building the table heads
echo "<table  border=2 class=table width=100% height=80%>";
echo "<tr><th class=head colspan=7> <a href=calendar2.php?month=$minmonth&year=$year><<</a>   $title $year <a href=calendar2.php?month=$maxmonth&year=$year>>></a>   </th></tr>";
echo "<tr class=body><td width=42>S</td><td width=42>M</td><td width=42>T</td><td width=42>W</td><td width=42>T</td><td width=42>F</td><td width=42>S</td></tr>";
 
//This counts the days in the week, up to 7
$day_count = 1;
 
echo "<tr>";
//first we take care of those blank days
while ( $blank > 0 )
{
echo "<td> </td>";
$blank = $blank-1;
$day_count++;
} 
//sets the first day of the month to 1
$day_num = 1;
 
//count up the days, untill we've done all of them in the month
 
//while ($row = mysql_fetch_array($res))
//{
// while ($row2 = mysql_fetch_array($res2))
// {    
	while ( $day_num <= $days_in_month )
	{
      	if ($day==$day_num and $year2==$year and $month2==$month) // so this is today
		{
                
            ?><td class=day2 bgcolor="#FF0000"><? echo "$day_num <br />";
 
 
        	$resl = "select * from Events";
    		$res=mysql_query($resl) or die(mysql_error());
            $row = mysql_fetch_array($res);
        
        
            $thisday = mktime(0,0,0,$month, $day_num, $year);
            $dd = date ("Y-m-d",$thisday); 
       	
            $resl2 = "select * from Events WHERE SUBSTR(StartDate FROM 1 FOR 10) = '$dd'";         
        	
     		$res2=mysql_query($resl2) or die(mysql_error());
            while ($row = mysql_fetch_assoc($res2)){
	    
                
            $event_id = $row['ID'];
                            $event_name = $row['Event'];
                            $event_date = $row['StartDate'];
                            $event_time = mysql2timestamp($event_date);
                            $event_display_date = date("D, F j, Y", $event_time);
                            $event_description = $row['LocationID'];
                            $curDate = getdate($event_time);
                            $curMonth = $curDate['mon'];
                            $curYear = $curDate['year'];
                            $curFullMonth = $curDate['month'];
             
             echo "$event_name<br />";
             }
		?> 
		
		
		</td>


		<?
		
		}
        else{
            $thisday = mktime(0,0,0,$month, $day_num, $year);
            $dd = date ("Y-m-d",$thisday); 
       	
            $resl2 = "select * from Events WHERE SUBSTR(StartDate FROM 1 FOR 10) = '$dd'"; 
            $res2=mysql_query($resl2) or die(mysql_error());
        ?>
        <td class=day>
        <? echo "$day_num\n"; 
        while($row2 = mysql_fetch_array($res2)){
            $event_name2 = $row2['Event'];
            echo"$event_name2<br />";
            }            
        ?> 
        </td>
        <?
        } 

$day_num++;
$day_count++;
 
//Make sure we start a new row every week
if ($day_count > 7)
{
echo "</tr><tr>";
$day_count = 1;
}
} 
//    }
//    }
    
//Finaly we finish out the table with some blank details if needed
while ( $day_count >1 && $day_count <=7 )
{
echo "<td>  </td>";
$day_count++;
}
 
echo "</tr></table>"; 

 

 ?>

Open in new window

Avatar of Umar Topia
Umar Topia
Flag of India image

JQuery Week Calendar has been provided at the following location:-
https://github.com/robmonie/jquery-week-calendar
I think you should use the Jquery UI calendar.

Please go to the below URL and choose the theme you want and download the JS file.

http://jqueryui.com/demos/datepicker/
ASKER CERTIFIED SOLUTION
Avatar of Lukasz Chmielewski
Lukasz Chmielewski
Flag of Poland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial