【问题标题】:Loop is only checking first part of array循环只检查数组的第一部分
【发布时间】:2013-02-09 19:02:29
【问题描述】:

我正在制作一个日历系统,用户可以在其中进行预订(在不同的页面上)。在此页面上,用户单击相关框以选择新预订的开始时间。我正在检查数据库中的现有预订,并将其设为不可点击以防止重复预订。

我的问题是,为什么只有当天的第一个预订出现在桌子上?

变量$booked 是否仍然为真,因此不显示其他预订?我无法理解它!

MySQL:

$query="SELECT * FROM bookings WHERE DateBooked = '{$year}-{$month}-{$selectedday}' AND Approved = 1";
$result = mysql_query($query);
$todayarray = mysql_fetch_assoc($result);

还有 PHP:

while ($room <= $roomcount) {
    echo "\n<div class=\"roomtimes\">";
    echo "\n<table border=1>";
    echo "\n<tr><th class=\"titlecell\">Room $room</th></tr>";
    $cellnum = 10;
    while ($cellnum <= 22) {
        if (($todayarray['StartTime'] <= $cellnum) && ($todayarray['EndTime'] >= $cellnum) && ($todayarray['Room'] == $room)) {
            $booked = true;
        } else {
            $booked = false;
        }
        echo "\n<tr>";
        if ($booked) {
            echo "\n<td class=\"blankcell";
        } else {
            echo "\n<td class=\"linkcell";
        }

        if ($selectedtime == $cellnum) {
            echo " selectedcell";
        }
        echo "\">";
        if ($booked) {
            echo "$cellnum:00 --BOOKED--";
        } else {
            echo "<a href=\"newbooking.php?m=$selectedmonth&d=$selectedday&t=$cellnum&r=$room\">$cellnum:00</a>";
        }
        echo "</td>";
        echo "\n</tr>";
        $cellnum++;
    }
    $room++;
    echo "\n</table>";
    echo "\n</div>";
}
echo "\n</div>";
?>

【问题讨论】:

    标签: php mysql calendar


    【解决方案1】:

    问题在于您只查看表中结果集的第一行。你只调用一次mysql_fetch_assoc($result),这个函数一次只返回一个结果行。您需要遍历从查询调用中获得的$result。您可以使用类似这样的 while 循环:

    while ($row = mysql_fetch_assoc($result) {
       //this can be your php code from above 
    } 
    

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      相关资源
      最近更新 更多