以前、あるサイトで「フォトアルバム」なるページを作成したことがあった。一週間単位でサムネイル表示し、クリックすればポップアップで大きく表示というものである。その一週間単位でMySQLからクエリするスクリプトを載せておく。
・
・
$week = 0+date("w", strtotime($date));
$date1 = date("Y-m-d", strtotime($date) - $week * 86400);
$date2 = date("Y-m-d", strtotime($date1) + 7 * 86400);
・
・
(略)
・
・
$sql = "select * from PHOTO ";
$sql .= "where DATE >= '$date1' and DATE < '$date2' ";
$sql .= "order by DATE desc";
$qry = mysql_query($sql, $conn);
$date = 0;
while( $row = mysql_fetch_array($qry) )
{
・
・
(略)
・
・
}
mysql_close($conn);
まず、$dateに検索したい週のいずれかの日が入っている。date関数の"w"は週の数字を返す。日曜が0、土曜が6。考えを変えればそれは前の日曜日まで何日か?ということに置き換えることができる。従って、$dateから$week(前の日曜日までの日数)×1日の秒数(86400秒)を引いた $date1 は日曜日、$date1 に 7日分の秒数を加えた $date2 は次の日曜日ということになる。それをクエリの where節に指定してやれば、一週間の検索ができる。
なお、例えば月曜始まりにしたければ、$week を調整してやることで可能。
$week = 0+date("w", strtotime($date));
$week = ($week + 6) % 7;
としてやれば、日曜の場合 $week は (0+6)%7 で 6。月曜の場合は (1+6)%7で0。であるので、月曜始まりの一週間が検索できる。