データベースからデータを取得して、週ごとのカレンダーのようなテーブルに予約を表示しようとしています。予約時間は「予約」クラスを取る必要があります。何らかの理由で、foreach ループが実行されていないようです。コードが現在書かれている方法では、テーブルは各データ エントリに対して "test" を読み取る必要があります。
$schedule = mysql_query ("SELECT * FROM reservation WHERE location_id = '$reserve' AND year = '$year' AND quarter = '$quarter' AND date_note = 'Quarter' ORDER BY hour_start ASC");
foreach ($time as $hour) {
$endhour = $hour + 30;
foreach ($week as $day) {
while ($sched_table = mysql_fetch_array($schedule)) {
if ($sched_table['day_of_week'] == $day) {
if ($sched_table['hour_start'] == "") {
echo "<td>test</td>";
} elseif ($sched_table['hour_start'] >= $hour && $sched_table['hour_start'] < $endhour) {
echo "<td class='reserve'>test</td>";
} else {
echo "<td>test</td>";
}
}
}
}
}
上記のすべての変数は、次のように以前に定義されています。
$reserve = $_POST['reserve'];
$year = 2013;
$quarter = "Fall";
$week = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
$time = array();
for ($x = 800; $x < 2001; $x += 100) {
$y = $x + 30;
array_push($time, $x, $y);
}
簡単なメモ -- foreach ループの前に が設定されていないことに気付きました。各行の開始位置と終了位置を決定する前に、ループが実行されていることを確認したかったので、echo ""; を挿入しました。そしてエコー ""; ステートメント全体の最初と最後に。これにより、「テスト」の長いリストが 1 つ作成されるはずですが、何も表示されません。
データベースは、開始時刻を「900」ではなく「0900」として保存します。ループが実行されない理由を説明できますか? その場合、$time を再定義して文字列として存在させる必要がありますか、それとも値として扱うことができるでしょうか。
助けてくれてありがとう。