Mega Code Archive

 
Categories / Php / HTML
 

This PHP function creates dropdown select lists for time and date that you can

change, outputs a 14 char MySQL timestamp in a text field Enjoy this - I'm sure it could be more elegant, but I couldn't find something like this anywhere else. Pull your hair out on more important programming problems! If you like it, or improve upon it, drop me a line. call the function like this: <?PHP stamper($previous_value); ?> <?PHP function stamper($previous_value) { // your constants $form_name = "form1"; $store_stamp_field = "datestamp"; // looks for previous 14 char stamp or defaults to now if (!$previous_value) { $my_stamp = date("YmdHis"); } else { $my_stamp = $previous_value; } // parses the timestamp & digests it into useful variables $year=substr($my_stamp,0,4); $month=substr($my_stamp,4,2); $day=substr($my_stamp,6,2); $hour=substr($my_stamp,8,2); $minute=substr($my_stamp,10,2); $second=substr($my_stamp,12,2); // here you can set your ("starting value", "range") for each $year_range = array("2000","11"); $month_range = array("01","12"); $day_range = array("01","31"); $hour_range = array("00","24"); $minute_range = array("00","60"); $second_range = array("00","60"); $names = array("month","day","year","hour","minute","second"); $names_for_stamp = array("year","month","day","hour","minute","second"); // this drops in some javascript to do the onChange event handler for each select list echo "<script language=\"JavaScript\">\n"; echo "function adj_timestamp () {\n"; echo "var each_field = new Array(" . count($names) . ");\n"; for ($i=0;$i<count($names);$i++) { echo "each_field[" . $i . "] = document." . $form_name . "." . $names_for_stamp[$i] . ".options [document." . $form_name . "." . $names_for_stamp[$i] . ".selectedIndex].value;"; } echo "var timestamp = "; for ($i=0;$i<count($names);$i++) { if ($i!=(count($names)-1)) { echo "each_field[" . $i . "] + "; } else { echo "each_field[" . $i . "];\n"; } } echo "document." . $form_name . "." . $store_stamp_field . ".value = timestamp;\n"; echo "}\n"; echo "</script>\n"; // this creates the selects and add the JS event handler for ($i=0;$i<count($names);$i++) { echo "<select name=\"$names[$i]\" onChange=\"adj_timestamp();\">\n"; $this_one = ${"$names[$i]" . "_range"}; for ($k=0;$k<$this_one[1];$k++) { $each_val = $this_one[0]+$k; if (strlen($each_val)<2) { $each_val = sprintf("%02d", $each_val); } if (${"$names[$i]"}==$each_val) { $selected=" selected"; } else { $selected=""; } echo "<option value=\"$each_val\"$selected>$each_val</option>\n"; } echo "</select>\n"; } //this creates the initial timestamp $the_stamp = $year . $month . $day . $hour . $minute . $second; //this holds the dynamic timestamp value, make it hidden once you get the hang of how it all works echo "<input type=\"text\" name=\"$store_stamp_field\" value=\"$the_stamp\">\n"; } ?>