【问题标题】:codeigniter select atleast date time from nowcodeigniter 从现在开始至少选择日期时间
【发布时间】:2018-04-04 13:25:36
【问题描述】:

所以我在 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>    

beginddatum 和 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");
            }
        }


    }

那么,我该如何解决这个问题?可能有表单验证规则?

感谢任何形式的帮助

【问题讨论】:

标签: php forms codeigniter validation codeigniter-3


【解决方案1】:

在客户端使用 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>

HTML input

对于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');

【讨论】:

    【解决方案2】:

    您可以将日期与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' =&gt; 'required|compare_date'。在compare_date() 函数中你可以使用上面的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-02
      • 2021-08-05
      • 2016-07-07
      • 1970-01-01
      • 2013-08-08
      • 2019-07-10
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多