Assuming that your weeks aren't really eight days long, that you don't really want to attempt to construct an infinitely long query string, and that what you really want is a separate set of results for each weekly period, you could try something like this:
$week_start = '2005-12-01';
$number_of_weeks = 52;
make_weekly_queries($week_start, $number_of_weeks);
function make_weekly_queries($start, $number)
{
for ($i = 0; $i < $number; $i++) {
if ($i > 0) {
$start = add_days(7, $start);
}
$query = "SELECT * FROM my_table WHERE" .
" date_column BETWEEN " . $start .
" AND " . ($end = add_days(6, $start));
$result = mysql_query($query);
display_query_results($result, $start, $end);
}
}
function add_days($days, $date)
{
$date = date('Y-m-d', strtotime('+' . $days . ' days', strtotime($date)));
return $date;
}
function display_query_results($res, $start, $end)
{
echo 'Week of ' . $start . ' through ' . $end . ':<br />';
if (!mysql_num_rows) {
echo 'No results' . '<br />';
} else {
while ($row = mysql_fetch_array($res)) {
echo $row['date_column'] . ' - ' . $row[$data_column] . '<br />';
}
}
}
(After adding some more error checking, of course.)