如果$ value是其中一行,请在FOR循环PHP中检查并排除

时间:2013-06-06 07:04:12

标签: php mysql loops for-loop each

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

I.E:

<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> ...然后继续检查下一个,依此类推。)但是,当我从MYSQL数据库中选择了 $ tee_times_from_mysql 时,它只用了最近预订的开球时间(只有一个)并且排除了......其余的被忽略了(或者根本就没有被取出,不确定)....所以如果有多个预定的开球时间(显然不会超过一个),它就不起作用那个)....我的问题是如何在数据库中的任何时候排除时间。

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 FETCH:

$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"));

    }

1 个答案:

答案 0 :(得分: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>';
}