hi!
i suggest this:
use three separate text inputs: YYYY MM DD.
validate them using the checkdate function http://www.php.net/manual/en/function.checkdate.php
this is very easy!
my way of storing dates in databases is to use simple integer fields which hold the unix timestamp (seconds from 1970/1/1, 0:00). therefore, convert $year, $month, $day to a timestamp:
$timestamp = mktime(0, 0, 0, $month, $day, $year);
(look up the mktime function in php.net)
i like using unix timestamps because you can handle (calculate, display) them comfortably with php's date/time functions.
echo date("F d, Y", $timestamp); will give: April 16, 1980
the other way is to make use of the database's "date" datatype. the advantage is that, if you have to do sophisticated date/time calculations in your sql statements, you can have the db handle that which increases performance of large queries (because f. ex. you don't have to calculate something in your scripts ... for every record you read in from the db. can take time!).
usually you can insert dates into date-type table fields using the syntax '1980-04-16'. but this depends on your local db settings, be sure to try it out first.
in order to format a date string coming from a date-type field, you can either format it using an sql function (to_char or the like) or grab it to your script, explode it into day, month and year substrings, mktime() it into a timestamp and do the same echo date(...) as above.
hope this helps ...