> I am having some problem with date validation > I am trying to validate the date in a form Field > I had provided a text field for date, so have to > expect all the different possible entry, > When i tried with checkdate() method it needs the > parametes in (int month,int date, int year). It make > the code more complex , What i am looking is some > thing similar to is_int(), like the one we have in VB > isdate() > thanks in advance
There's nothing like that, you have to create it yourself. I personally hate the three drop down method that someone else suggested, but that's just me. I prefer to have a text box like you, but tell the user what the accepted format is. You can then write a simple function to parse their answer and make sure it's correct. You can also use that function to convert it to a Unix timestamp or MySQL timestamp. I prefer to accept my dates in the military format of DDMMMYYYY or DDMMMYY (17NOV75 or 17NOV1975). I use this function to validate the input: //check that date matches 17nov75 or 17nov1975 format. //if it does, returned as mysql format date yyyymmdd function date($input,$label,$format) { $retval = false; //defaults $month_array = array("jan"=>"01","feb"=>"02","mar"=>"03","apr"=>"04","may"=>"05","jun"=>"06 ","jul"=>"07","aug"=>"08","sep"=>"09","oct"=>"10","nov"=>"11","dec"=>"12"); $days_in_month = array(31,28,31,30,31,30,31,31,30,31,30,31); //verify date matches 17nov75 or 17nov1975 format if(eregi("^([0-9]{1,2})-?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-? ((19|20)?[0-9]{2})$",$input,$regs)) { //convert month to number $regs[2] = strtolower($regs[2]); $month = $month_array[$regs[2]]; //make days two digits if it's not already $day = $regs[1]; if($day < 10 && strlen($day) == 1) { $day = "0" . $day; } if($regs[3] < 100) { //account for 2 digit year //< 30 = 20xx //> 30 = 19xx if($regs[3] < 30) { $year = "20" . $regs[3]; } else { $year = "19" . $regs[3]; } } else { $year = $regs[3]; } //verify day does not exceed days in month if(($day <= $days_in_month[$month-1] && $day > 0) || ($day==29 && $month==2 && $year%4==0)) { $retval = $year.$month.$day; } else { $this->error[] = $label . ": date has invalid day"; } } else { $this->error[] = $label . ": date does not match format of 17NOV75 or 17NOV1975"; } return $retval; } ---John Holmes... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php