0

感谢您阅读我的问题。在 PHP 中使用 for 循环,我希望在企业的开放和关闭时间之间完成一个时间列表(偏移 5 分钟)的回显。这个挑战对编程来说不是问题,我的代码<option>成功地输出了一个巨大的标签列表,每个标签内都有时间值(偏移 5 分钟):

IE:

<option value="2013-06-06 08:00:00">8:00 am</option>
<option value="2013-06-06 08:05:00">8:05 am</option>
<option value="2013-06-06 08:10:00">8:10 am</option>

.....etc.

但是,我有一个 MYSQL 表设置,每行内都有一列(设置为 DATETIME 格式),即开球时间....许多人可能知道您不能有超过一个人预订开球立即关闭,所以我试图让它在哪里,如果那个时间(在那个 for 循环内)等于从数据库中获取的任何(预定)时间,那个值不会在那个列表中回显。

下面是我的代码,(至少是 for 循环)这是输出<option>标签的内容:(而且你可以看到我试图在那里做一个 IF 语句,说明如果$time等于$tee_times_from_mysql不要回显那个<option>.. .然后继续检查下一个,依此类推。)但是,当$tee_times_from_mysql从我的 MYSQL 数据库中被 SELECT-ed 时,它只花费了最近预订的开球时间(只有一个)并排除了... .其余的都被忽略了(或者根本就没有被拿走,不确定)....所以如果有超过一个预定的开球时间(显然会更多),它就不起作用....我的问题是如果它们等于数据库中的任何时间,我如何排除时间。

for ($i=$startHour; $i <= $endHour; $i++)
{
    for ($j = 0; $j <= 55; $j+=5)
    {
        $time_pre = $i.":".str_pad($j, 2, '0', STR_PAD_LEFT);
        $time = ''.$time_pre .' '.$day.'';

        /////////////////////////////

        $time_formated_for_cosmetic = date("g:i a", strtotime("$time"));
        $time_formated_for_mysql = date("Y-m-d H:i:s", strtotime("$time"));

         if ($time == $tee_times_from_mysql){
            $time = '';
        }
         else{
            $time = '<option value="' . $time_formated_for_mysql . '">'.$time_formated_for_cosmetic .'</option>';
        }
        echo $time;
    }
}

这也是我的 MYSQL 提取:

$tee_times_from_mysql = "";

$sql = "SELECT * FROM tee_times";
$query = mysqli_query($db_conx, $sql);
while($row = mysqli_fetch_assoc($query)){
    $tee_times_from_mysql = $row["date_time"];
    $tee_times_from_mysql =  date("G:i n/j/y", strtotime("$tee_times_from_mysql"));

    }
4

1 回答 1

1

您的 MySQL 获取循环仅设置$tee_times_from_mysql为查询返回的最后时间,而不是全部。您需要使用数组。此代码创建一个数组,其键始终为:

$tee_times_from_mysql = array();

$sql = "SELECT * FROM tee_times";
$query = mysqli_query($db_conx, $sql);
while($row = mysqli_fetch_assoc($query)){
    $tee_time = date("G:i n/j/y", strtotime($row["date_time"]));
    $tee_times_from_mysql[$tee_time] = true;
}

然后创建选项的代码应如下所示:

if (isset($tee_times_from_mysql[$time])) {
    $time = '';
} else {
    $time = '<option value="' . $time_formated_for_mysql . '">'.$time_formated_for_cosmetic .'</option>';
}
于 2013-06-06T07:33:24.230 回答