0

ストアドプロシージャには、@startdateと@enddateの2つのパラメータがあります。ユーザーはテキストボックスから開始日を選択し、テキストボックスからも終了日を選択します。次に、[送信]をクリックします。

ユーザーが両方のボックスを空白のままにした場合、当月全体、つまり2012年8月1日から2012年8月31日までのデータが表示されることを確認したいと思います。

ユーザーがいずれかのボックスで日付を選択した場合、もう一方のテキストボックスも同じ値になります。

そこで、以下のように変数を宣言して条件を試しましたが、選択した日付に関係なく、常に1か月分のデータが表示されます。私の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

最後の2つの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 に答える