[英]php form with two dates validation (before submit)
我正在尝试为“”创建验证,但我不知道该怎么做。
该表格有两个日期:
这些变量存储为关联数组(例程['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.