Итак, у меня есть форма в структуре CI, и в этой форме пользователь может выбрать дату, а также дату в прошлом. Но я не хочу, чтобы пользователи могли выбирать дату в прошлом. Так, например, если кто-то заполняет форму, он не может выбрать дату до 04-04-2018 (то есть сегодня). это то, что я хочу. Прямо сейчас кто-то может выбрать дату, например, с 1980 года.
На мой взгляд, это мой код формы:
<?php echo form_open('index.php/Jongeren_activiteiten/Add_activiteit'); ?>
<br>
<center>Naam van activiteit:</center>
<div class = "form-group">
<input class = "form-control" name = "activiteit" id = "activiteit" type = "text">
</div>
<center>Begindatum:</center>
<div class = "form-group">
<input class = "form-control" name = "begindatum" id = "begindatum" placeholder = "Startdatum cursus" type = "date">
</div>
<center>Einddatum:</center>
<div class = "form-group">
<input class = "form-control" name = "einddatum" id = "einddatum" placeholder = "einddatum cursus" type = "date">
</div>
<div>
<button class = "btn btn-primary" name = "Add_activiteit" >Toevoegen</button>
</div>
</form>
begininddatum и einddatum являются датами.
функция контроллера формы с правилами проверки:
public function Add_activiteit()
{
if (isset($_POST['Add_activiteit'])) {
$this->form_validation->set_rules('activiteit', 'Activiteit', 'required|is_unique[activiteit.activiteit]');
$this->form_validation->set_rules('begindatum', 'Begindatum', 'required');
$this->form_validation->set_rules('einddatum', 'Einddatum', 'required');
//If form validation true
if ($this->form_validation->run() == TRUE) {
// echo 'form validated';
$data = array (
'activiteit'=>$_POST['activiteit'],
'begindatum'=>$_POST['begindatum'],
'einddatum'=>$_POST['einddatum'],
);
$this->db->insert('activiteit',$data);
$this->session->set_flashdata("success", "u heeft een nieuwe activiteit toegevoegd");
redirect("index.php/Jongeren_activiteiten", "refresh");
}
}
}
Так как я могу это исправить? возможно с правилом проверки формы?
спасибо, любая помощь приветствуется
Я не использую javascript. Не могу я сделать это с помощью php или codeigniter?






Можно сравнить даты с классом DateTime
$begindatum = $_POST['begindatum'];
$date = new DateTime($begindatum)->format('Y-m-d');
$today = new DateTime()->format('Y-m-d');
if ($date < $today) {
echo 'Date is in the past';
}
Если вы хотите использовать проверку формы CI, вы можете добавить функцию обратного вызова, например 'rules' => 'required|compare_date'. И в функции compare_date() вы можете использовать приведенный выше код
Используйте проверку HTML5 на стороне клиента, чтобы ваш html был
<div class = "form-group">
<input class = "form-control" name = "begindatum" id = "begindatum" placeholder = "Startdatum cursus" min = "<?php echo $today_date;?>" type = "date">
</div>
А для codeigniter используйте настраиваемое правило проверки
function custom_date_validation($date)
{
//return true or false
}
//then used it you form validation
$this->form_validation->set_rules('begindatum', 'Begindatum', 'required|callback_custom_date_validation');
Используете ли вы средство выбора даты js, установите minDate ..