我觉得我在这里很容易丢失一些东西,并在构建“预约日程安排”日历时有点卡住。PHP for循环,匹配输出与数据库结果
客户可以预订他们自己的时间段,当他们这样做时...我需要让他人无法使用这些时间段。
对于“开始时间”选择,我从上午9点至晚上7点以30分钟的时间间隔使用下拉菜单中的“for循环”。如果在数据库中保存“上午10点”的“开始时间”和“上午11点30分”的“结束时间”......上午10点,上午10点30分和上午11点需要从成功提交表单后的“开始时间”下拉菜单。
(数据库结果是在一个字符串的形式... FYI)
为了做到这一点,我有这样的:
$sql_slots = "SELECT * FROM XXXXXXXXX WHERE date = '$query_date' ORDER BY XXXXXXXXX ASC";
$result_slots = mysqli_query($connection, $sql_slots);
$open = strtotime("9:00am");
echo'
<select name="start_time">';
for($b = 0; $b <= 20; $b++){
$y = strtotime(($b*30) . " Minutes", $open);
$the_time = date("h:ia", $y) . "<br>";
$starting = array();
while($row_result_slots = mysqli_fetch_assoc($result_slots)){
$starting[] = $row_result_slots['start_time'];
}
if(in_array($the_time, $starting)){
echo "<option>Not Available</option>";
} else {
echo "<option>" . $the_time . "</option>";
}
}
echo'</select>';
任何建议,要完成这个或不是“更好的方法in_array“来完成我想要做的事情?
预先感谢您。
为什么在'for'部分'while'一部分?在'for'的第一次迭代之后'mysqli_fetch_assoc'将不会提供任何内容。 – JOUM
良好的通话。我将while循环移至for循环之前,并解决了一个问题。另一个问题是 - 在进行比较时,我没有考虑附加到$ the_time字符串的“
”。感谢您的帮助。 – Shane