/    Sign up×
Community /Pin to ProfileBookmark

PHP CAlendar – showing today

I have this PHP generated calendar I’m working with and it shows what day it is by changing the style of that certain box like it’s supposed to. But it also changes the style if the box for the same day on the next month. How can I get it to stop doing this? Here is my PHP…

[code=php]<?php
include ‘global/includes/connect.php’;

// Retrieve all the data from events
$result = mysql_query(“SELECT * FROM calendar”);
$row = mysql_fetch_array($result);

// Gather variables from
// user input and break them
// down for usage in our script
if(!isset($_REQUEST[‘date’])){
$date = mktime(0,0,0,date(‘m’), date(‘d’), date(‘Y’));
} else {
$date = $_REQUEST[‘date’];
}

$day = date(‘d’, $date);
$month = date(‘m’, $date);
$year = date(‘Y’, $date);

// Current date
$currentDate = date(‘m’).date(‘d’).date(‘Y’);
echo $currentDate;

// Get the first day of the month
$month_start = mktime(0,0,0,$month, 1, $year);

// Get friendly month name
$month_name = date(‘F’, $month_start);

// Figure out which day of the week
// the month starts on.
$month_start_day = date(‘D’, $month_start);

switch($month_start_day){
case “Sun”: $offset = 0; break;
case “Mon”: $offset = 1; break;
case “Tue”: $offset = 2; break;
case “Wed”: $offset = 3; break;
case “Thu”: $offset = 4; break;
case “Fri”: $offset = 5; break;
case “Sat”: $offset = 6; break;
}

// determine how many days are in the last month.
if($month == 1){
$num_days_last = cal_days_in_month(0, 12, ($year -1));
} else {
$num_days_last = cal_days_in_month(0, ($month -1), $year);
}
// determine how many days are in the current month.
$num_days_current = cal_days_in_month(0, $month, $year);

// Build an array for the current days
// in the month
for($i = 1; $i <= $num_days_current; $i++){
$num_days_array[] = $i;
}

// Build an array for the number of days
// in last month
for($i = 1; $i <= $num_days_last; $i++){
$num_days_last_array[] = $i;
}

// If the $offset from the starting day of the
// week happens to be Sunday, $offset would be 0,
// so don’t need an offset correction.

if($offset > 0){
$offset_correction = array_slice($num_days_last_array, -$offset, $offset);
$new_count = array_merge($offset_correction, $num_days_array);
$offset_count = count($offset_correction);
}

// The else statement is to prevent building the $offset array.
else {
$offset_count = 0;
$new_count = $num_days_array;
}

// count how many days we have with the two
// previous arrays merged together
$current_num = count($new_count);

// Since we will have 5 HTML table rows (TR)
// with 7 table data entries (TD)
// we need to fill in 35 TDs
// so, we will have to figure out
// how many days to appened to the end
// of the final array to make it 35 days.

if($current_num > 35){
$num_weeks = 6;
$outset = (42 – $current_num);
} elseif($current_num < 35){
$num_weeks = 5;
$outset = (35 – $current_num);
}
if($current_num == 35){
$num_weeks = 5;
$outset = 0;
}
// Outset Correction
for($i = 1; $i <= $outset; $i++){
$new_count[] = $i;
}

// Now let’s “chunk” the $all_days array
// into weeks. Each week has 7 days
// so we will array_chunk it into 7 days.
$weeks = array_chunk($new_count, 7);

// Build Previous and Next Links
$previous_link = “<a href=””.$_SERVER[‘PHP_SELF’].”?date=”;
if($month == 1){
$previous_link .= mktime(0,0,0,12,$day,($year -1));
} else {
$previous_link .= mktime(0,0,0,($month -1),$day,$year);
}
$previous_link .= “”><< Prev</a>”;

$next_link = “<a href=””.$_SERVER[‘PHP_SELF’].”?date=”;
if($month == 12){
$next_link .= mktime(0,0,0,1,$day,($year + 1));
} else {
$next_link .= mktime(0,0,0,($month +1),$day,$year);
}
$next_link .= “”>Next >></a>”;

// Build the heading portion of the calendar table
echo “<table border=”0″ cellpadding=”0″ cellspacing=”0″ id=”calendar”>n”.
“<tr id=”calendarHeader”>n”.
“<td id=”previous” colspan=”2″>$previous_link</td>n”.
“<td id=”calendarMonth” colspan=”3″>$month_name $year</td>n”.
“<td id=”next” colspan=”2″>$next_link</td>n”.
“</tr>n”.
“<tr id=”days”>n”.
“<td>Sunday</td><td>Monday</td><td>Tuesday</td><td>Wednesday</td><td>Thrusday</td><td>Friday</td><td class=”keepBorder”>Saturday</td>n”.
“</tr>n”;

// Now we break each key of the array
// into a week and create a new table row for each
// week with the days of that week in the table data

$i = 0;
foreach($weeks AS $week){
echo “<tr id=”calendarBody”>n”;
foreach($week as $d){
if($i < $offset_count){
echo “<td class=”nonmonthdays” valign=”top”><span>$d</span></td>n”;
}
if(($i >= $offset_count) && ($i < ($num_weeks * 7) – $outset)){
if($currentDate == date(‘m’).$d.date(‘Y’)){
echo “<td class=”today” valign=”top”><span>$d</span></td>n”;
} else {
echo “<td class=”monthdays” valign=”top”><span>$d</span><div class=”event”></div></td>n”;
}
} elseif(($outset > 0)) {
if(($i >= ($num_weeks * 7) – $outset)){
echo “<td class=”nonmonthdays” valign=”top”><span>$d</span></td>n”;
}
}
$i++;
}
echo “</tr>n”;
}
// Close out your table and that’s it!
echo ‘<tr id=”calendarFooter”><td colspan=”7″ class=”days”>Footer</td></tr>’;
echo ‘</table>’;
?>[/code]

to post a comment
PHP

0Be the first to comment 😎

×

Success!

Help @novemberGrey spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.19,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...