0

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

**注意/条件
没有页面重定向
没有创建两张表,一张用于查询结果为空,一张用于查询结果

还是有更好的方法来做到这一点?
这是一个示例代码:

<?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 循环上引发错误。

4

3 回答 3

1

关于异常:

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

关于始终显示标题:

无论如何要显示标题,请将 if 语句移动到循环之前。

仅供参考 - 关于格式良好的 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>

更多关于格式化表格

在您的情况下,我会将循环<tr>放在<tbody>.

于 2013-02-10T22:19:23.973 回答
1

当查询结果返回 false 时,改为返回一个空数组

我希望这会有所帮助,并准备好在需要时提供更多帮助

于 2013-02-10T22:20:37.513 回答
0
<?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 模板使用长格式的语句,因为它极大地提高了可读性。

于 2013-02-10T22:18:50.707 回答