Validate date dd/mm/yyyy
You can validate through regular expression first you should write a function like this
function validate_date_reg($input){ if (preg_match('\d{1,2}/\d{1,2}/\d{4}', $input)) { return true; // it matched, return true } else { return false; }}
and call it like this:
if($this->validate_date_reg($this->input->post('some_data'))){ // true go ahead......}
i hope that this will help you.
1) How to validate a date with CI callbacks:
"The validation system supports callbacks to your own validation functions. This permits you to extend the validation class to meet your needs."
In your method:
$this->form_validation->set_rules('text_date', 'Date', 'trim|exact_length[10]|callback_validate_date');
Your own callback function:
public function validate_date($incoming_date){ //If in dd/mm/yyyy format if (preg_match("^\d{2}/\d{2}/\d{4}^", $incoming_date)) { //Extract date into array $date_array = explode('/', $incoming_date); //If it is not a date if(! checkdate($date_array[1], $date_array[0], $date_array[2])) { $this->form_validation->set_message('validate_date', 'Invalid date'); return false; } } //If not in dd/mm/yyyy format else { $this->form_validation->set_message('validate_date', 'Invalid date'); return false; } return true;}
2) How to compare two dates:
$date_one = (int) strtotime(str_replace('/', '-', $this->input->post('date_one', true)));$date_two = (int) strtotime(str_replace('/', '-', $this->input->post('date_two', true)));if($date_one < $date_two){ echo 'Message';}else{ echo 'Message';}
try out this..
you need to down date.js from this url "https://code.google.com/p/datejs/downloads/list"
call datefunction()
function form onChange()
<script> function datefunction() { var startdate = document.getElementById('date1').value; var enddate = document.getElementById('date2').value; // for current date use // var enddate = new Date(); var d1 = Date.parse(startdate ); var d2 = Date.parse(enddate ) ; if (d1 > d2) { alert ("Start Date cannot be gratter than End Date!"); return false; } }</script>