我正在尝试从URL解析数据(用于过滤)。我希望能够使用http://domain.com/page.php?startDate=20150101&endDate=20150927。在此示例中,数据从1月1日至9月27日使用/可见/计算。
输入/更改endDate时,该日期在过滤器中正确使用。如果今天没有输入日期应该使用(但那就是它出错的地方)。为此,我使用以下代码:
$endDateFormat = DateTime::createFromFormat('Ymd', htmlspecialchars($query['endDate']));
$endDate = $endDateFormat->format('Y-m-d'); // change YYYYMMDD to YYYY-MM-DD for MySQL.
if (empty($endDate)) {
$endDate = date('Y-m-d'); // Use todays date if date is not entered.
} elseif ($endDate >= date('Y-m-d')) {
$endDate = date('Y-m-d'); // Use todays date if date is newer than today.
}
由于未知原因,必须在URL中添加endDate 。如果未使用,则页面为空白。如果输入,代码按预期工作:当您使用31-12-2015作为endDate时,它会自动更正为今天(当然,您无法获取未来的数据),并且当您使用比今天更早的日期时使用该日期。我通过检查计算和仅来自$ endDate的回声验证了这一点。
我现在不知道如何防止出现空白页面。目的是使用今天的日期作为endDate,如果你到达http://domain.com/page.php(因此endDate为空/ NULL /不在URL中)。
这个问题也出现在startDate中,但我确信它有相同的原因。
答案 0 :(得分:0)
我从头开始(又一次),找到了适用于我的解决方案,代码更少。不知道为什么我没有及早发现它或者早期的重启'出现了什么问题,但以下工作正如我所愿:
$endDate = htmlspecialchars($query['endDate']);
if (empty($endDate)) {
$endDate = date('Ymd');
} elseif ($endDate >= date('Ymd')) {
$endDate = date('Ymd');
}