Week Calendar PREV and NEXT

OK, I give up!  I'm not sure what I am doing wrong!

I have the following script that determines the date and shows a 1 week Calendar.
The Next Week Button and the PREV week button work 100%.  However, depending on the day, there is a query that pulls information from a DB and displays it on the correct date. This also works 100%.  However, when I click NEXT or PREVIOUS the Calendar itself does not change date. (At line 38)

function weekCalendar($date='Today')	{  //  METHOD
    $pdo = new PDO("");
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	
	
	
    $timestamp      = strtotime(date('Y-m-01', strtotime($date)));
    $caption     	= date("F Y", $timestamp);

	
	$date = !empty($_GET['d']) ? $_GET['d'] : 'Today';
	
	$ts = !empty($_GET['d']) ? strtotime($_GET['d']) : strtotime('Today');
	
	if (!$ts) $ts = strtotime('Today');
	$prev = date('Y-m-d', $ts - 60*60*24*7);
	$next = date('Y-m-d', $ts + 60*60*24*7);

	$prev_link = '<a href="' . $_SERVER['PHP_SELF'] . "?d=$prev" . '">Prev</a>' . PHP_EOL;
	$next_link = '<a href="' . $_SERVER['PHP_SELF'] . "?d=$next" . '">Next</a>' . PHP_EOL;
	
	$date_adv = date('Y-m', $ts);

?>

<table id="cal_nav">
	<tr>
		<td class="cal-nav-left"><h2><?php echo $prev_link; ?></h2></td>
		<td class="cal-nav-center"><h2><?php echo date('F Y', strtotime($date)); ?></h2></td>
		<td class="cal-nav-right"><h2><?php echo $next_link; ?></h2></td>
	</tr>
</table>

<?php	
    echo PHP_EOL;
	echo "<table class='full'><tr>";
	
	for($day=1; $day<=7; $day++) {
		echo '<td class="align-top"><strong>' .date('D M d', strtotime($date_adv.'-'.$day)).'</strong><br />';
		
		$this_date = date('Y-m-d', strtotime($date_adv.'-'.$day));
		echo $this_date;
		
		$sql = "SELECT schedule_id, first_name, last_name, asset_name, asset_type, start_date, workorder_id, color
				FROM schedule
				WHERE start_date = '$this_date'
				GROUP BY schedule_id DESC";

		$pdos = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
		
		try{
			$pdos->execute();
			
			if ($pdos) {
				while ($row = $pdos->fetch(PDO::FETCH_OBJ)) {
					$at = $row->asset_type;
					$fn = $row->first_name;
					$ln = $row->last_name;
					$sd = $row->start_date;
					$id = $row->schedule_id;
					$ac = $row->color;
 
					
					if ($sd == $this_date && $at == 'driver') {
						
						echo '<a href="view_workorder_print.php?id='.$id.'">'.$fn .''. $ln .'</a><br />';
						} 
					
				}  //  END WHILE
				
			}  //  END IF
			
			
		}  //  END TRY			          	
		catch(PDOException $e) {
   			echo 'ERROR: ' . $e->getMessage();
		}
		echo "<td>";	
	}  //  END FOR
	echo "</tr></table>";
		
	}
//  END WEEK CAKENDAR
}

Open in new window

LVL 7
rgranlundAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Ray PaseurCommented:
Is this on a public-facing server where we can see the rendered HTML document?  If no, can you please put it in a test environment so we can see it in action?  Thanks, ~Ray
0
Ray PaseurCommented:
I think you want to follow the $this_date variable in the logic.  Not sure about that but it's getting late in the day here.  If you look at the PHP code and the generated HTML document closely, you may find that the HTML is not what you expected from running the PHP.  In particular, the HTML document starts with this:
</tr></table>


		
	}
//  END WEEK CAKENDAR
}
?><!DOCTYPE html>

Open in new window

0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

Ray PaseurCommented:
See if this is helpful.  It should work correctly even across leap year and daylight saving time.  Please post back if you still have questions, thanks.

<?php // RAY_temp_rgranlund.php
error_reporting(E_ALL);


// DEMONSTRATE PREVIOUS AND NEXT WEEKS
// SEE http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_28315321.html


// SET THE TIMEZONE
date_default_timezone_set('America/Chicago');

// IF THERE IS A URL ARGUMENT, USE IT PREFERENTIALLY, OR USE TODAY
$ts = !empty($_GET['d']) ? strtotime($_GET['d']) : FALSE;
if (!$ts) $ts = strtotime('TODAY');

// NORMALIZE TO THE ISO-8601 DATE WITHOUT TIME
$ymd = date('Y-m-d', $ts);
$day = date('D', $ts);

// THE WEEKLY CALENDAR WILL START ON SUNDAY
if ($day == 'Sun')
{
    $alpha = $ymd;
}
else
{
    $alpha = date('Y-m-d', strtotime($ymd . ' LAST SUNDAY'));
}

// THE WEEKLY CALENDAR WILL END ON SATURDAY
$omega = date('Y-m-d', strtotime($alpha . ' SATURDAY'));

// THE PREV AND NEXT WEEKS WILL BE COMPUTED FROM THE CURRENT DAY
$prev  = date('Y-m-d', strtotime("$ymd - 1 WEEK"));
$next  = date('Y-m-d', strtotime("$ymd + 1 WEEK"));

// MAKE THE URLS
$prev_uri = $_SERVER['PHP_SELF'] . "?d=$prev";
$next_uri = $_SERVER['PHP_SELF'] . "?d=$next";

// MAKE THE LINK TEXTS
$prev_lnk = '<a href="' . $prev_uri . '">Prev</a>';
$next_lnk = '<a href="' . $next_uri . '">Next</a>';

// MAKE THE REPRESENTATION OF THE WEEK
$week['prev'] = $prev_lnk;
while ($alpha <= $omega)
{
    // A TEXT VERSION OF THE WEEKDAY
    $day = date('D', strtotime($alpha));

    // HIGHLIGHT THE CURRENT DAY
    if ($alpha == $ymd)
    {
        $week[$day] = "<b>$alpha</b>";
    }
    else $week[$day] = $alpha;
    $alpha = date('Y-m-d', strtotime("$alpha + 1 DAY"));
}
$week['next'] = $next_lnk;

// SHOW THE REPRESENTATION OF THE WEEK
echo '<pre>';
print_r($week);

Open in new window

HTH, ~Ray
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
rgranlundAuthor Commented:
@Ray.  I was able to edit it into what I needed.  So strange.  I looked all over the internet for an example of how to do this, to no real avail.  Thanks again!
0
Ray PaseurCommented:
Glad to be able to help!  Thanks, ~Ray
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.