Version: .8
Type: Class
Category: Calendars/Dates
License: GNU General Public License
Description: From: Sandon Jurowski
At: UW Madison Medical School
[email protected]
Here is a feature-rich, html-generating, 3-column date-picker class that:
a) automatically selects a the correct pulldown values from a mysql record field in the “date” format of “0000-00-00”.
b) re-selects the previously or newly chosen values if the form is re-sent (as during data validation errors)
c) lets you choose a default date, or today’s date as the default
d) lets you choose the minimum and maximum year values OR lets you choose a difference value for the minumum and for the maximum as well when populating the year pulldown
From: Sandon Jurowski At: UW Madison Medical School [email protected] Here is a feature-rich, html-generating, 3-column date-picker class that: a) automatically selects a the correct pulldown values from a mysql record field in the "date" format of "0000-00-00". b) re-selects the previously or newly chosen values if the form is re-sent (as during data validation errors) c) lets you choose a default date, or today's date as the default d) lets you choose the minimum and maximum year values OR lets you choose a difference value for the minumum and for the maximum as well when populating the year pulldown EXAMPLE: <?php $my_form = new Form_help; $my_form->print_date_pulldown("birthDate", $row["birthDate"], 0, 0, 1965, 0, 0, 1); ?> HERE's THE CLASS: <?php class Form_help { function print_date_pulldown($date_name, $date_value_row, $date_default_today = 0, $date_default_value = 0, $min_year = 0, $max_year = 0, $min_year_diff = 0, $max_year_diff = 0) { $default_min_year_diff = 80; $default_max_year_diff = 5; if ($min_year_diff <> 0) $min_year_diff = $default_min_year_diff; if ($max_year_diff <> 0) $max_year_diff = $default_max_year_diff; #if no max or min years are given, use defaults or derive from diffs if given $today = getdate(); if ($min_year == 0) $min_year = $today[year] - $min_year_diff; if ($max_year == 0) $max_year = $today[year] + $max_year_diff; if ($date_value_row == "") { if ($date_default_today == 1) $date_value_row = getdate(); #use today's date as the default if ($date_default_value <> 0) $date_value_row = $date_default_value; #use provided date as the default } if ($date_value_row == "" and $date_default_today == 1) $date_value_row = getdate(); $date_year = substr($date_value_row,0,4); $date_month = substr($date_value_row,5,2); $date_day = substr($date_value_row,8,2); $fill_array = array(""); for ($i = 1;$i <= 12;$i++) { array_push($fill_array, $i); } $this->print_pulldown($date_name."_month", $date_month, $_REQUEST[$date_name.'_month'], $fill_array); $fill_array = array(""); for ($i = 1;$i <= 31;$i++) { array_push($fill_array, $i); } $this->print_pulldown($date_name."_day", $date_day, $_REQUEST[$date_name.'_day'], $fill_array); if ($date_year < $min_year and $date_year > 0) $min_year = $date_year; $fill_array = array(""); for ($i = $min_year;$i <= $max_year;$i++) array_push($fill_array, $i); $this->print_pulldown($date_name."_year", $date_year, $_REQUEST[$date_name.'_year'], $fill_array); } function print_pulldown($pulldown_name, $value_row, $value_chosen, $value_option_array, $value_underlying_array = "", $auto_reload = 0) { #This function will fill a pulldown list intelligently, meaning it will check to see if the form has been reloaded due to bad data (and it will auto-select the previously selected item... so it has a "memory" of sorts) #It also will select a value that corresponds to a saved item in a database record #Otherwise it will select the first, blank option, by default ########### #PARAMETERS ########### #1) $pulldown_name: # the name of the pulldown #2) $value_row: # the value of the database record's field corresponding to this pulldown (ie which one was previously selected and saved into the database) #3) $value_chosen: # usually $_REQUEST[$pulldown_name], the value that the user chose before submitting the form... used to re-select the correct entry in case the form needs to be reloaded before the record is saved due to incorrect or missing data entry #4) $value_option_array: # an array of text values to be added to the array of pulldown items. #5) $value_underlying_array: # an array of actual values to be added to the array of pulldown items. #6) $auto_reload: # whether to reload the html page when the item is changed if ($value_underlying_array == "") { $value_underlying_array = $value_option_array; } echo "<select name='".$pulldown_name."'"; if ($auto_reload == 1) echo " onchange='JavaScript:submit()'"; echo ">"; $i = 0; foreach ($value_option_array as $value_option) { if ($value_underlying_array[$i] == "") { #blank option (first option is blank) echo '<option value="'.$value_underlying_array[$i].'"'; if (isset($_REQUEST[$pulldown_name]) and $value_chosen == $value_underlying_array[$i]) {echo 'selected';} else { if ($value_row == $value_underlying_array[$i]) { echo 'selected'; } } echo'></option>'; } else { #non-blank option echo '<option value="'.$value_underlying_array[$i].'"'; if ($value_chosen == $value_underlying_array[$i]) { echo 'selected'; } else { if ($value_row == $value_underlying_array[$i]) { echo 'selected'; } } echo'>'.$value_option.'</option>'; } $i ++; } echo "</select>"; } } %>