带有html表的PHP时间表

带有html表的PHP时间表,php,html,mysql,Php,Html,Mysql,我有一个for循环,通过单元格输出一天24小时。我想从数据库中检索开始时间和结束时间,并显示colspan,以在表中表示数据库中的记录。我可以使用从数据库返回的行数成功删除额外的单元格,但我知道有一种更好的方法可以使用colspan输出单元格,而无需通过行数重复。 //以秒为单位的间隔 $interval=1800; $date_first=“02-09-2013 00:00:00”; $date_second=“03-09-2013 00:00:00”; $time\u first=stro

我有一个for循环,通过
单元格输出一天24小时。我想从数据库中检索开始时间和结束时间,并显示
colspan
,以在表中表示数据库中的记录。我可以使用从数据库返回的行数成功删除额外的
单元格,但我知道有一种更好的方法可以使用
colspan
输出
单元格,而无需通过行数重复。

//以秒为单位的间隔
$interval=1800;
$date_first=“02-09-2013 00:00:00”;
$date_second=“03-09-2013 00:00:00”;
$time\u first=strottime($date\u first);
$time\u second=strottime($date\u second);
对于($i=$time_first;$i query(“从表中选择*,其中$timeOut介于starttime和endtime之间,item='1'和active='true');
如果($a->num\u rows>0){
$b=$a->fetch_array();
$starttime=$b[“starttime”];
$endtime=$b[“endtime”];
$colspan=$endtime-$starttime;
//带有colspan的项目应该在这里
//但是他们输出的次数太多了。
//我需要一些方法在每次输出后退出。
回声';
}否则{
回声';
}
}

正确设置下一次迭代:

if ($a->num_rows > 0) {
    $b = $a->fetch_array();
    $starttime = $b["starttime"];
    $endtime = $b["endtime"];
    $colspan = $endtime - $starttime;
    // The items with colspan should be here
    // but they output too many times.
    // I need some way to exit this after each output.
    echo '<td colspan="'.$colspan.'"></td>';
    $i = $time_first + $interval*ceil(($endtime-$time_first)/$interval);
    // or, $i += $interval*$colspan;
} else {
    echo '<td></td>';
}
if($a->num\u rows>0){
$b=$a->fetch_array();
$starttime=$b[“starttime”];
$endtime=$b[“endtime”];
$colspan=$endtime-$starttime;
//带有colspan的项目应该在这里
//但是他们输出的次数太多了。
//我需要一些方法在每次输出后退出。
回声';
$i=$time\u first+$interval*ceil($endtime-$time\u first)/$interval);
//或者,$i+=$interval*$colspan;
}否则{
回声';
}

24个对DB的单独查询!哎哟!这个解决方案创建了一个无限循环。我想知道是否有一种简单的方法可以利用数组一起完成这个任务?真奇怪。试试另一种方法,
$I+=$interval*$colspan
$colspan=$endtime-$starttime
应该是
$colspan=min(1,$endtime-$starttime)
当然可以。感谢您的帮助。但我认为我需要采取另一个方向。我可以成功获得colspan,我的问题是,当我只需要一个结果时,我会输出许多结果。我想您需要重写查询。我会将此问题标记为最喜欢的问题,以便在早上7:30以外的时间返回
if ($a->num_rows > 0) {
    $b = $a->fetch_array();
    $starttime = $b["starttime"];
    $endtime = $b["endtime"];
    $colspan = $endtime - $starttime;
    // The items with colspan should be here
    // but they output too many times.
    // I need some way to exit this after each output.
    echo '<td colspan="'.$colspan.'"></td>';
    $i = $time_first + $interval*ceil(($endtime-$time_first)/$interval);
    // or, $i += $interval*$colspan;
} else {
    echo '<td></td>';
}