0

我的存储过程中有两个参数,即@startdate 和@enddate。用户从文本框中选择开始日期,也从文本框中选择结束日期。然后点击提交。

我想确保如果用户将两个框都留空,它应该显示整个当前月份的数据,即现在 01/08/2012 到 31/08/2012。

如果用户只是在任何一个框中选择日期,则另一个文本框应该具有相同的值。

所以我已经声明了如下变量并尝试了条件,但它总是显示整个月的数据,而不管选择了什么日期。我认为我的 if 条件有问题。

$startdate = isset($_REQUEST['startdate']) ? $_REQUEST['startdate'] : null;
$enddate   = isset($_REQUEST['enddate']) ? $_REQUEST['enddate'] : null;
if (empty($startdate)) {
    $startdate = $enddate;
}
if (empty($enddate)) {
    $enddate   = $startdate;
}
if (empty($startdate))
    ;
if (empty($enddate))
    ;
$startdate = '01/08/2012';
$enddate   = '31/08/2012';
4

3 回答 3

4

最后两条if语句对程序流程没有影响。你总是设置$startdate$enddate到指定的日期。

你需要:

if(empty($startdate)) $startdate = '01/08/2012';
if(empty($enddate)) $enddate = '31/08/2012';

如果你想每次都得到实际月份的第一天和最后一天,你可以使用这样的东西:

if(empty($startdate)) $startdate = date('01/m/Y', strtotime("-1 month"));
if(empty($enddate)) $enddate = date('d/m/Y', strtotime("-1 month"));
于 2012-08-22T20:23:59.657 回答
1

我认为这会奏效

$startdate = isset($_REQUEST['startdate']) ? $_REQUEST['startdate'] : "";
$enddate = isset($_REQUEST['enddate']) ? $_REQUEST['enddate'] : "";

if (empty($startdate) && (empty($enddate)) {
    $startdate = '01/08/2012';
    $enddate = '31/08/2012';
} elseif (empty($startdate) {
    $startdate = $enddate;
} elseif (empty($enddate) {
    $enddate = $startdate;
}

如果两者都为空,则使用本月的月初和月底;如果其中一个为空,则使用另一个的值。

于 2012-08-22T20:25:03.720 回答
1

逻辑不正确。这应该有效。

$startdate = isset($_REQUEST['startdate']) ? $_REQUEST['startdate'] : null;
$enddate = isset($_REQUEST['enddate']) ? $_REQUEST['enddate'] : null;

if (empty($startdate)) {
$startdate  = $enddate ;
}
elseif (empty($enddate)) {
$enddate = $startdate;
}
elseif(empty($startdate) && empty($enddate)) {
$startdate = '01/08/2012';
$enddate = '31/08/2012';
}
于 2012-08-22T20:25:12.020 回答