2017-04-17 18 views
0

標準の日付値(「2017-04-17」、「2017-04-18」など)を含む日付フィールド(NDateと呼ばれる)を持つテーブルがMySQLにあります。PHPのインクリメンタル日MySQLの日付

PHPのWebページから、私はシステムの日付(今日は2017-04-17と言います)をとり、上記の表のすべての行をNDate = "2017-04-17"にします。ここまで問題はありません。

今日(今日から10日間続く2017-04-17から2017-04-26まで)の日数を増やす必要があります。また、「Entries for 2017-04-17 "には、NDate 2017-04-17を持つすべての行、「Entries for 2017-04-18」が表示され、NDate 2017-04-18を持つすべての行がリストされます。

私はPHPのdate_modify関数でforループを使用して日数を1つずつ増やそうとしましたが、結果は表示されません。ここ
は、コードの選択部分です:Webページ上の

date_default_timezone_set('US/Eastern'); 
$datev = date("Y-m-d"); 
for ($x = 0; $x <= 10; $x++) 
{ 
    $datev=date_modify($date,"+$x days"); 
    echo "before date format<br>";  // echo statement 1 
    echo "date is: $datev <br>";  // echo statement 2 
    $sql = "SELECT * FROM tablename where Ndate='$datev'"; 
    echo "before result<br>";   // echo statement 3 
    ... 
    ... 
    ... 
} 

出力のみの文1を示している。しかし、エコー統計2と3は印刷されません。

答えて

0

あなたは日付関数のパラメータとしてのstrtotime関数を使用して日をインクリメントすることができます。

forループを使用すると、日の配列を作成できます。その後、それを反復して、必要なクエリを実行します。

$today = date('Y-m-d'); 
$dates=array($today); 
for($i=1;$i<10;$i++) { 
    $NewDate=date('Y-m-d', strtotime("+".$i." days")); 
    $dates[]=$NewDate; 
} 

foreach($dates as $dt) { 
    // sql stuff here 
    echo "date is: $dt <br>"; 
    $sql = "SELECT * FROM tablename where Ndate='$dt'"; 
    echo "before result<br>"; 
    // ..... 
} 

このコードは、あなたの場合に有効です。問題があれば教えてください。

+0

このコードは質問に答えるかもしれませんが、このコードが質問に答える理由と理由についての追加の文脈を提供することで、長期的な価値が向上します。何が行われたのか、理由を説明してくださいそれはOPのためだけでなく、将来の訪問者のためにそうした方法で行われました。 –

+0

@JayBlanchardもう一度コード例の情報を追加しました –

+0

あなたの他の答えを見直すべきですか?または、必要な情報/説明を追加して戻す時間を取るでしょうか? –

0

はこれを試してみてください:

$start = strtotime(date('Y-m-d')); 
$end = strtotime(date('Y-m-d', strtotime('+10 days'))); 
while($start <= $end) 
{ 
    $date = date('Y-m-d', $start); 
    //use $date to do stuff 
    //SELECT * FROM tablename where Ndate='$date' 
    $start = strtotime("+1 day", $start); 
} 
+0

こんにちは@ gaganshera、ありがとう、すぐに応答します。あなたはまた、正確なSQLステートメントであるべきものを明らかにすることができますか? "$ sql =" SELECT * FROM tablename where Ndate = '$ start ";"結果が返されません... $ startをエコーする(値が "2017-04-17"の場合は "1492412400"の値を公開します) – user6337701

+0

"試していない"。 ***はいつも何が行われたのか、それがOPのためだけではなく、将来の訪問者のためにこのように行われた理由を説明します。 –

+0

@ user6337701 1492412400は[unix timestamp](https:// en .wikipedia.org/wiki/Unix_time)数値形式の日付を表します また、質問の回答で私のコメントを確認してください – gaganshera