Confirm date dd / mm / yyyy

I have a minute for textbox , and when I want to check the submission form, if the date is greater than the current date and has the format dd/mm/yyyy .

in my form_validation.php:

 'add_prod_serv_fact' => array( 'quantidade_prod' => array('field' => 'quantidade_prod', 'label' => 'Quantidade', 'rules' => 'required|trim|numeric|greater_than[0]|htmlspecialchars'), 'desconto_prod' => array('field' => 'desconto_prod', 'label' => 'Desconto', 'rules' => 'required|trim|numeric|greater_than[-1]|less_than[101]|htmlspecialchars'), 'date' => array('field' => 'date', 'label' => 'Date', 'rules' => 'required|trim|htmlspecialchars') ) 

How to check the date?

+4
source share
3 answers

You can check the correct expression first, you have to write a function like

 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 name it as follows:

 if($this->validate_date_reg($this->input->post('some_data'))) { // true go ahead...... } 

I hope this helps you.

+6
source

1) How to confirm the date using CI callbacks :

β€œThe validation system supports callbacks to your own validation functions. This allows 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'; } 
+3
source

try it.

 you need to down date.js from this url "https://code.google.com/p/datejs/downloads/list" 

call datefunction() form of the onChange() function

 <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> 
+2
source

Source: https://habr.com/ru/post/1490399/


All Articles