0

テレビ番組でやっているカレンダーに問題があります。

基本的には、自分の曜日と、その日に放送された番組を出力したい。(明らかに7つの異なるクエリを実行せずに)

以下は、放送日が週の初めから終わりまでの番組を出力します。

$stmt = $conn->prepare("SELECT * 
FROM show_episode_airdate, show_episode
WHERE show_episode_airdate.airdate BETWEEN :weekbeginning AND :weekend AND show_episode.episode_id = show_episode_airdate.episode_id ");

$stmt->execute(array(':weekbeginning' => $begin_date, ':weekend' => $end_date));

while($row = $stmt->fetch()) {

}

これは、週の 7 つの日付を出力します。

foreach ($listofdays as $num=>$jour) {
     $date_table[$num] = date('m-d-Y',$weekbegin[0]+$num*DUREE_UN_JOUR);
     $daysoftheweek = $date_table[$num];
     var_dump($daysoftheweek);
    }

これにより、次が出力されます。

string '05-20-2013' (length=10)

string '05-21-2013' (length=10)

string '05-22-2013' (length=10)

string '05-23-2013' (length=10)

string '05-24-2013' (length=10)

string '05-25-2013' (length=10)

string '05-26-2013' (length=10)

これら2つのことを組み合わせて、私が求めているものを達成する方法がわかりません??!

4

1 に答える 1

0

これを解決するための私の戦闘計画は次のとおりです。

使用する$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

explodeこれらをループし、おそらくandを使用して、日付を文字列形式から UNIX タイムスタンプに変換しますmktime

foreach($rows as &$row) {
    $unix_airdate= mktime(...TODO);
    $row['unix_airdate']= $unix_airdate;
}
unset($row); //do not forget because $row was a reference

次に、既に記述したループで、http: $filtered_rows= array_filter($rows, 'my_filter_function..TODO'); //www.php.net/manual/en/function.array-filter.php を使用して、my_filter_function が unix_airdate が weekbegin から次の週の開始までの間であることを確認するようにします。

フィルタリングされた配列を調べて、すべてのショーを出力します。日ごとに集計したい場合は、曜日をループして、代わりに day_begin と day_begin_next_day でフィルタリングします。

于 2013-05-23T15:38:13.197 に答える