当没有该单元格的数据时,我想在表格中显示一个空单元格

时间:2016-10-19 21:55:51

标签: php mysql

我们的组织提供早晨&下午几个不同级别的滑雪之旅。并非所有巡回级别都在每个会话中发生,并且有时可能同时在给定级别上进行多次巡回。我想按日期,旅游类型和时间显示客人号码。我没有问题检索数字,我的问题是显示。在没有数据的情况下,我无法弄清楚如何使其显示空白单元格,或者显示空白单元格的单元格。

图像显示了我正在获得的样本,我修改了一下以显示我想要的内容。

sample output table 希望这将澄清我的问题。 3月28日上午和下午有五种类型的游客。 3月29日,没有人参加BlGrn Tour,因此该日期的数据库中不存在其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>';

导致每个单元格与数据之间出现空单元格。

我认为我需要的是

if($ row [amID] == 1此日期不存在 ){echo'';

我发现了这个

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

}

关于“如何实现is_empty”但我不知道它是我需要的还是如何使用它。

1 个答案:

答案 0 :(得分:0)

如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>'
        */
    }
}