データベースから選択して、日付が月に該当する「キャンペーン」を取得しようとしています。これまでのところ、今月中に開始または終了する行を取得することに成功しています。ここで行う必要があるのは、1か月で始まり、数か月後に終了する行を選択することです(例: 1年の3か月目で、1か月目から5か月目まで実行される「キャンペーン」があります。その他例2012年から2013年まで実行される「キャンペーン」があります)
私は、MySqlを介して、capaignが実行される可能性のあるすべての行を選択する方法があることを望んでいます。そうでない場合は、データベース内のすべてのデータを取得し、現在の月に実行されたデータのみを表示する必要があります。
「dateRange」と呼ばれる、配列内の各日付の間のすべての日を表示する関数をすでに作成しました。また、「runTime」と呼ばれる、キャンペーンが実行される日数を示す別のものを作成しました。
すべて選択 (明らかに)
$result = mysql_query("SELECT * FROM campaign");
今月開始を選択
$result = mysql_query("SELECT * FROM campaign WHERE YEAR( START ) = YEAR( CURDATE( ) ) AND MONTH( START ) = MONTH( CURDATE( ) )");
今月末を選択
$result = mysql_query("SELECT * FROM campaign WHERE YEAR( END ) = YEAR( CURDATE( ) ) AND MONTH( END ) = MONTH( CURDATE( ) ) LIMIT 0 , 30");
コードサンプル
while($row = mysql_fetch_array($result))
{
$dateArray = dateRange($row['start'], $row['end']);
echo "<h3>" . $row['campname'] . "</h3> Start " . $row['start'] . "<br /> End " . $row['end'];
echo runTime($row['start'], $row['end']);
print_r($dateArray);
}
日付に関しては、MySqlデータベースはキャンペーンの開始日と終了日のみを保持します。