如果查询返回false,则显示空/空白表


display empty/blank table if query returns false

如果查询结果为空,显示空/空表或仅显示表头的正确实现是什么?

**注意事项/条件
无页面重定向
不创建两个表,一个用于空结果查询,另一个用于结果查询

或者有更好的方法吗
这是一个示例代码:

<?php if(isset($result)){ ?>  
<table>
<tr>
    <td>Name</td>
    <td>Email</td>
</tr>  
<?php foreach($result as $key => $data){?>
<tr>  
    <td><?php echo $data['name'];?></td>  
    <td><?php echo $data['email_add'];?></td>   
</tr>   
<?php }?>
</table>
<?php } ?>

这里的问题是它仍然在foreach循环中抛出一个错误。

当查询结果返回false时,返回一个空数组,而不是

我希望这能有所帮助,并准备在需要时获得更多帮助

关于异常:

您检查是否设置了$results,但随后尝试在$result上循环(没有尾部s)。我相信你有错别字,这可能是问题的一部分。修复拼写错误并确保结果不为空(可能已设置,但仍然为空)可能会修复引发的异常。

关于始终显示标题:

无论怎样都要显示标题,请将if语句移到循环之前。

FYI-关于格式良好的HTML表:

要在表上声明表头,通常使用<thead>元素,将其与表的内容分离。格式良好的HTML表示例:

<table>
   <thead>
       <tr>
          <th>Name</th>
          <th>Email</th>
       </tr>
   </thead>
   <tbody>
       <tr>
          <td>John</td>
          <td>john@email.com</td>
       </tr>
   </tbody>
</table>

有关格式化表格的更多信息

在您的情况下,我会将循环放在<tbody>中的<tr>元素周围。

<?php if(isset($result) && !empty($result)): ?>  
    <table>
    <tr>
        <td>Name</td>
        <td>Email</td>
    </tr>  
    <?php foreach($result as $data): ?>
    <tr>  
        <td><?php echo $data['name'];?></td>  
        <td><?php echo $data['email_add'];?></td>   
    </tr>   
    <?php endforeach ?>
    </table>
<?php else: ?>
    No results found.
<?php endif ?>

注意,我更喜欢在PHP模板中使用长形式的语句,因为它大大提高了可读性。