This script will give you "Previous/Next" functionality. It's not a pretty display, but that's just a matter of html and/or css.
$query = "DROP TABLE IF EXISTS test_data_table";
$result = mysql_query($query);
$query = "CREATE TABLE test_data_table (user TEXT, entry_date DATE, entry TEXT)";
$result = mysql_query($query)
or die('Snafu with query: ' . $query);
$query = "INSERT test_data_table (user, entry_date, entry) " .
"VALUES ('A', '2005-12-25', 'entry'),
('A', '2005-12-26', 'entry'),
('B', '2005-12-25', 'entry'),
('A', '2005-12-26', 'entry'),
('A', '2005-12-27', 'entry'),
('A', '2005-12-28', 'entry'),
('C', '2005-12-25', 'entry'),
('A', '2005-12-30', 'entry'),
('C', '2005-12-25', 'entry'),
('A', '2005-12-31', 'entry'),
('A', '2005-12-31', 'entry'),
('A', '2006-01-06', 'entry'),
('B', '2006-01-03', 'entry'),
('A', '2006-01-03', 'entry'),
('A', '2005-12-11', 'entry'),
('A', '2005-12-19', 'entry'),
('A', '2005-12-20', 'entry'),
('A', '2005-12-24', 'entry'),
('A', '2006-01-04', 'entry')";
$result = mysql_query($query)
or die('Snafu with query: ' . $query);
$user = 'A';
if (!isset($_GET['base'])) {
$base_time = time();
} else {
$base_time = $_GET['base'];
}
echo '<table border="1"><tr>';
$sunday_ts = strtotime('-' . date('w', $base_time) . ' days', $base_time);
for ($day = 0; $day < 7; $day++) {
$current_day = strtotime('+' . $day . ' days', $sunday_ts);
$date_field = date('Y-m-d', $current_day);
echo '<td>' . $date_field . '<br />';
$query = "SELECT entry FROM test_data_table " .
"WHERE user = '" . $user . "' " .
"AND entry_date = '" . $date_field . "'";
$result = mysql_query($query)
or die('Snafu with query: ' . $query);
while ($row = mysql_fetch_assoc($result)) {
echo $row['entry'] . '<br />';
}
}
echo '</tr></table><br />';
echo '<a href="' . $_SERVER['PHP_SELF'] . '?base=' . strtotime('-7 days', $base_time) . '">Previous</a><br />';
echo '<a href="' . $_SERVER['PHP_SELF'] . '?base=' . strtotime('+7 days', $base_time) . '">Next</a><br />';