ここでは、DB テーブルの行から「日付」キー値にアクセスします。そして、これらの値をエコーできます。問題ありません。
$res = $mysqli->query("SELECT * FROM alfred ORDER BY id ASC");
$row = $res->fetch_all(MYSQLI_ASSOC);
foreach ($row as $key => $value){
$availDate = $value['date'];
echo $availDate.'<br />';
}
上記のループは、DB からのすべての「日付」値を示しています。この場合、「2012-09-25」、「2012-09-27」、「2012-09-29」の 3 つの日付があります。しかし、これらの「日付」値のそれぞれを$date->format('Y-m-d')
以下のコードの値と比較し、対応する「ビジー」または「利用可能」ステータスの各日付を<td>
テーブルとは別に表示する必要があります。私の次のバージョンは、「日付」キーの「最後の」値である「2012-09-29」のみを比較しますが、上記の配列の各「日付」値を比較する必要があります。これは、「2012-09-25」も意味し、 "2012-09-27". 多くのバージョンを試しましたが、まだ成功していません。何か案は?
$date = new DateTime();
$endDate = new DateTime('+10 day');
for($date->format('Y-m-d'); $date->format('Y-m-d') < $endDate->format('Y-m-d'); $date->modify('+1 day')){
if ($date->format('Y-m-d') == $availDate){
echo '<td>'.$date->format('Y-m-d/D').' busy</td>';
} else {
echo '<td>'.$date->format('Y-m-d/D').' available</td>';
}
}
これが私が今得ている結果です:
2012-09-21/Fri available 2012-09-22/Sat available 2012-09-23/Sun available 2012-09-24/Mon available 2012-09-25/Tue available 2012-09-26/Wed available 2012-09-27/Thu available 2012-09-28/Fri available 2012-09-29/Sat busy 2012-09-30/Sun available
<td>
しかし実際には、"2012-09-25" と "2012-09-27" の"ビジー" ステータスも表示する必要があります<td>
。これらは $row 配列に存在する「日付」値でもあるからです。残念ながら、ここに表示する画像を投稿することはできませんが、上記の結果からアイデアが得られることを願っています.
以下のin_arrayの助けを借りて解決しました:
$aAvailDate = array();
foreach ($row as $key => $value){
$aAvailDate[] = $value['date'];
}
$date = new DateTime();
$endDate = new DateTime('+10 day');
for($date->format('Y-m-d'); $date->format('Y-m-d') < $endDate->format('Y-m-d'); $date->modify('+1 day')){
if (in_array($date->format('Y-m-d'), $aAvailDate)){
echo '<td>'.$date->format('Y-m-d/D').' busy</td>';
} else {
echo '<td>'.$date->format('Y-m-d/D').' available</td>';
}
}