0

コードに問題があります。明らかに、私は PHP でプログラミングを始めたばかりで、その高度な概念については何も知りません。だから私はあなたの助けを求めています。ユーザーが入力した終了日に 2 か月追加したいと思います。以下のコードを試しました:

protected function inputEndDate() {
    $value = $this->endDate;
    $html = "";
    $html .= '<label for="enddate">End Date:</label>' . PHP_EOL;
    $html .= '<input type="text" readonly name="enddate" id="enddate" value="'.$value.'">';
    $html .= '<input type="button" id="enddatebutton" onclick="getEndDate()">' . PHP_EOL;
    return $html;
}


protected function inputExpiryDate() {
    $value = $this->endDate;
    $date = date('Y/m/d', strtotime("$value +2 month"));
    $html = "";
    $html .= '<label for="expirydate">Expiry Date:</label>';
    $html .= '<input type="text" readonly name="expirydate" id="expirydate" value="'.$date.'">';
    $html .= '<input type="button" id="expirydatebutton" onclick="getExpiryDate()">' . PHP_EOL;
    return $html;
}

しかし、プログラムを実行すると、正しい値が表示されません。ただし、開始日の追加された 2 か月が表示されています。助けてください。ありがとう。

4

5 に答える 5

0

を使用してみてくださいmktime()

mktime()PHPマニュアルで

于 2012-10-09T06:14:25.287 に答える
0

このコードを試してみてください、それは動作します

$value = $this->endDate; // yyyy-mm-dd format
$date  = strtotime ( '+2 month' , strtotime ( $value ) ) ;
$date  = date ( 'Y/m/d' , $date);

echo $date ;

作業例http://codepad.org/RM1aXXWIを参照してください

于 2012-10-09T06:14:42.280 に答える
0

これを試して:

$date = date('Y/m/d', strtotime("+2 month", strtotime($value)));
于 2012-10-09T07:02:05.667 に答える
0

あなたの質問を理解しているかどうかわかりません。

PHP関数inputEndDate()を呼び出すと、このhtmlがレンダリングされます

<label for="enddate">End Date:</label>
<input type="text" readonly name="enddate" id="enddate" value="">
<input type="button"     id="enddatebutton" onclick="getEndDate()">

私のコードでは空であるため、入力フィールド enddate の値$this->endDateは空です。どこで入手または記入し $this->endDateますか?

3 つの入力フィールドがすべて同じページにある場合は、endDate の入力に基づいて expireDate の値を変更する JavaScript が必要です -私の更新された jsfiddle-exampleを参照してください。

PHPコードのレビュー後の更新

私はあなたのコードを調べました - サーバー側の php var を埋めている場所が見つかりませんでしたthis->endDate。あなたの他の質問に基づいて、変更イベントを使用してjavascriptで日付を追加する方法に基づいて、問題がどこにあるのかわかりません。

  • サーバーで php コードを処理する場合、クライアント (ブラウザー) に html をレンダリングする前に、expireDate の値が既に入力されている必要があります。見るpublic function setEditBallpark()と線$this->endDate = $this->ballparkDetails->getBallparkDetailsEndDate();
  • ページがクライアントのブラウザ内に読み込まれる場合、html+css+javascript のみが利用可能です。を埋めるにthis->endDateは、クライアントの値をサーバーに投稿する必要があります (通常の投稿または ajax)。17 行目はコメント# $_POST["enddate"]ですが、post 値を取得している唯一の場所は$this->endDate = $this->createBallparkController->getFormEndDate();75 行目のこの行です。しかし、メソッド名 function setErrorForm()から、このメソッドは通常の post ケースには関係ないと思われます。
于 2012-10-09T06:31:02.670 に答える
0

問題は $value = $this->endDate; が原因である可能性があります。月数を増やす前に $value を確認してください。2 か月追加しても問題ない実装を確認しました。

<?php
$value='2012/11/15';
$date = date('Y/m/d', strtotime("$value +2 month"));
echo $date;
于 2012-10-09T06:42:38.437 に答える