繁体   English   中英

带有两个日期验证的php表单(提交之前)

[英]php form with two dates validation (before submit)

我正在尝试为“”创建验证,但我不知道该怎么做。

该表格有两个日期:

  1. DateStart
  2. 日期停止(必须在日期开始之后)。

这些变量存储为关联数组(例程['col'] =>'val')。 我创建了这个:

<form ..>
 ...
 <tr>
     <td>Star date: </td>
     <td><input type="date" name="routine[Datestart]"></td>
 </tr><?php $routine['Datestart']; ?>
 <tr>
     <td>Stop Date: </td>
     <td><input type="date" name="routine[Datestop]"
         min="routine[Datestart]"></td>
 </tr>
 ...
</form>

显然, min选项不起作用。

我看到Javascripts提供了一些解决方案,但我从未使用过Java,因此,如果我可以使用简单的php变量来做,那就更好了,但是我在寻找最聪明的解决方案,所以我简单地问您去做。

网络上的验证在两个地方完成:

在服务器(PHP)上。 在将来自野生网站的数据插入数据库之前,您始终需要检查服务器上的用户输入。 检查字段是否为空的最简单的验证方法是:

<?php

$errors = array();

if ( empty($POST["foo"]) || count($POST["foo"]) < 1) {
  $errors["foo"] = "Foo can't be blank";
}

if ( empty($errors) ) {
  // all good here
} else {
  // display errors to user.
}

这是一个非常琐碎的示例,并且以不同的方式编写了大量的书来验证用户输入。

要在PHP中比较两个日期,您需要将输入字符串解析为两个DateTime对象,然后可以进行比较:

$start = DateTime::createFromFormat(DateTime::RFC3339, $routine['Datestart']);
$end = DateTime::createFromFormat(DateTime::RFC3339, $routine['Dateend']);

if ($start > $end) {
  // its not valid.
} 

在浏览器中 由于服务器端验证要求用户在获得反馈之前先按发送,这有时会很慢,因此它们通常与客户端验证相辅相成,当用户键入时会提供即时反馈。 是以Javascript编写的(请勿与Java混淆),因为它是浏览器的通用语言。

但是,它们绝不能替代客户端验证,因为脚本错误或未启用JavaScript的用户将禁用验证。

你应该像这样使用jQuery。

jQuery代码

<script type="text/javascript">
        $(function () {

            $("#DateFrom").datepicker(
                    {
                        dateFormat: "dd-mm-yy",
                        changeMonth: true,
                        changeYear: true,
                        yearRange: '-50:+50',
                        maxDate: 'today',
                        onSelect: function (selectedDate) {
                            $("#DateTo").datepicker("option", "minDate", selectedDate);
                        }
                    }
            );

            $("#DateTo").datepicker(
                    {
                        dateFormat: "dd-mm-yy",
                        changeMonth: true,
                        changeYear: true,
                        yearRange: '-50:+50',
                        maxDate: 'today',
                        onSelect: function (selectedDate) {
                            $("#DateFrom").datepicker("option", "maxDate", selectedDate);
                        }
                    }
            );

        });
    </script>

HTHML代码或仅以UR形式包含它

<center>
        <input type="text" id="DateFrom"> To
        <input type="text" id="DateTo">
    </center>

您必须包括jQuery datepicker js和css。 文件。

试试这个,它将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM