我们的组织提供不同级别的早晨和下午滑雪之旅。并非所有巡回级别都发生在每个会话中,有时在同一时间同一级别可能会有多个巡回。我想按日期,游览类型和时间显示游客人数。检索数字没有问题,显示是我的问题。在没有数据的地方,我无法弄清楚如何显示空白的单元格,或者显示为0的单元格。

该图像显示了我所得到的样本,我对其进行了一些修改以显示我想要的。


希望这可以澄清我的问题。 3月28日上午和下午,所有5种类型的旅游都有客人参加。 3月29日,没有人参加BlGrn巡回赛,因此该日期的数据库中的amID值2不存在(请参见下文),Grn巡回赛的pmID值1也不会在当天下午出现,并且所有包含数据的单元格都没有向左移动。

memberID    amID    pmID    date    guestsAM    guestsPM    statsID
   191        5      5  28/03/2016     2           1    17322
   192        4      3  28/03/2016     4           4    17323
   52         0      1  28/03/2016     0           2    17324
   408        5      4  28/03/2016     2           7    17325
   370        0      2  28/03/2016     0           2    17326
   624        3      3  28/03/2016     3           5    17327
   480        1      2  28/03/2016     3           5    17329
   571        4      0  28/03/2016     3           0    17330
   427        3      0  28/03/2016     2           0    17331
   528        2      0  28/03/2016     3           0    17332

   13         4      2  29/03/2016     3           4    17333
   179        5      0  29/03/2016     3           0    17334
   147        1      0  29/03/2016     3           0    17335
   571        0      4  29/03/2016     0           2    17336
   426        0      3  29/03/2016     0           2    17338
   100        0      3  29/03/2016     0           3    17339
   165        3      0  29/03/2016     5           0    17340
   480        5      0  29/03/2016     1           0    17341
   427        1      5  29/03/2016     2           4    17342
   613        3      0  29/03/2016     4           0    17343


这是检索早晨数据的代码。如果同时存在多个给定类型的游览,则此代码将成功为这些游览加总访客人数。

$sql = "SELECT *, SUM(guestsAM) as guestsam FROM stats GROUP BY date, amID";
$mar_am_tour = mysqli_query($dbc,$sql) or die(mysqli_error());


这是我尝试显示一种巡回类型的数据的代码的一种变体。如果在该日期出现amID,则它就像一个超级按钮。如果不是,它只是将下一个单元格中的内容移动到空白处。 (参见图片)

while($row = mysqli_fetch_array($mar_am_tour)) {
    if ($row[date] == '2016-03-29') {
        if ($row[amID] == 1) {
            echo '<td class="members">' . $row[guestsam] .  '</td>';
        } else  {
            if ($row[amID] == '') {
                echo '<td class="members"></td>';
            }
        }
    }


我还尝试在'else'语句中用$ row [guestsam] == 0和$ row [guestsam] ==''替换Srow [amID],并反转if语句的顺序。将“ else”之后的if语句替换为

echo '<td class="members"></td>';


导致每个单元格之间有数据的空单元格。

我认为我需要的是一些类似的东西

如果($ row [amID] == 1在这个日期不存在){echo ;;

我找到了这个

function is_blank($value) {
return empty($value) && !is_numeric($value);


}

关于“如何实现is_empty”,但我不知道这是否是我需要的以及如何使用它。

最佳答案

如RST所述,当单元需要为空时,检查$ row [amID]的值。另外,您的代码有一些小错误

while($row = mysqli_fetch_array($mar_am_tour)) {
if ($row['date'] == '2016-03-29') {
    if ($row['amID'] == 1) {
        echo '<td class="members">' . $row['guestsam'] .  '</td>';
    } else  {
        if (!empty($row['amID'])) {
            echo '<td class="members"></td>';
        }
       /*what if $row['amID'] != '' .
        *Either put an else block here or remove the if block and just
        *echo '<td class="members"></td>'
        */
    }
}

10-08 09:28
查看更多