9.11. Creating Dropdown Menus Based on the Current Date

Problem

You want to create a series of dropdown menus that are based automatically on the current date.

Solution

Use date( ) to find the current time in the web server’s time zone and loop through the days with mktime( ).

The following code generates option values for today and the six days that follow. In this case, “today” is January 1, 2002.

list($hour, $minute, $second, $month, $day, $year) = 
                                  split(':', date('h:i:s:m:d:Y'));

// print out one week's worth of days
for ($i = 0; $i < 7; ++$i) {
    $timestamp = mktime($hour, $minute, $second, $month, $day + $i, $year); 
    $date = date("D, F j, Y", $timestamp);
                
    print "<option value=\"$timestamp\">$date</option>\n";
}
<option value="946746000">Tue, January 1, 2002</option>
               <option value="946832400">Wed, January 2, 2002</option>
               <option value="946918800">Thu, January 3, 2002</option>
               <option value="947005200">Fri, January 4, 2002</option>
               <option value="947091600">Sat, January 5, 2002</option>
               <option value="947178000">Sun, January 6, 2002</option>
               <option value="947264400">Mon, January 7, 2002</option>

Discussion

In the Solution, we set the value for each date as its Unix timestamp representation because we find this easier to handle inside our programs. Of course, you can use any format you find most useful and appropriate.

Don’t be tempted to eliminate the calls to mktime( ); dates and times aren’t as consistent as you’d hope. Depending on what you’re doing, you might not get the ...

Get PHP Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.