HongniangWeb 2026-03-06 08:20 采纳率: 71.4%
浏览 4
已结题

数据筛选后有空记录是怎么回事?


<!--{foreach $user as $volist}-->
  <!--{assign var="count" value=$count+1}-->
  <!--{if $volist.avatarflag<>-1}-->
    <!--{assign var="outerProvinceid" value=$volist.provinceid}-->
    <!--{assign var="outerCityid" value=$volist.cityid}-->
    <dl><dt>
      <a target="_blank" href="<!--{$volist.homeurl}-->">
        <!--{if $login.status == '0'&&$volist.groupid=="1"}-->
          <img src="/tpl/static/images/gender_<!--{if $volist.gender==1}-->1<!--{else}-->2<!--{/if}-->.gif" width="110" height="135" alt="<!--{$volist.username}-->" class="img100">
        <!--{else}-->
          <!--{avatar width='110px' height='135px' css='img100' value=$volist.avatarurl alt=$volist.username}-->
        <!--{/if}-->
      </a>
    </dt>
    <dd>
      <h3>
        <!--{if $volist.avatarflag <> '-1'}-->
          <!--{$volist.levelimg}-->
        <!--{else}-->
          <a href="http://www.71name.com/info/53.html" target="_blank"><em><font size="2px" color=red>不诚信会员</font></em></a>
        <!--{/if}-->
        <a href="<!--{$volist.homeurl}-->" target="_blank"><!--{$volist.username}--></a>
        <!--{assign var='onlinestatus' value=get_online(<!--{$volist.userid}-->)}-->
        <!--{if $onlinestatus == '1'}-->
          <a href=http://www.71name.com/index.php?c=online>
            <span class="span_4"><img src="http://www.71name.com/tpl/wap/images/yes.gif" width="24px" height="18px" title="在线" alt="会员在线" /></span>
          </a>
        <!--{else}-->
          <span class="span_5"><img src="http://www.71name.com/tpl/wap/images/no.gif" width="24px" height="18px" title="离线" alt="离线" /></span>
        <!--{/if}-->
        <!--{if $volist.groupid>1}-->已验证<!--{else}--><a href=http://www.71name.com/usercp.php?c=vip rel=nofollow>身份待验证</a><!--{/if}-->
      </h3>
      <p>
        <!--{$volist.age}-->&nbsp;
        <!--{if $volist.gender==1}--><!--{else}--><!--{/if}--> &nbsp;
        <!--{$volist.height}-->cm &nbsp;
        <a href=http://www.71name.com/user/<!--{$volist.cityid}-->>
          <!--{area type='text' value=$volist.provinceid}--><!--{area type='text' value=$volist.cityid}-->
        </a>
      </p>
      <!--{if $volist.monolog != ''}-->
        <p class="p_1"><!--{$volist.monolog|filterhtml:38}--></p>
      <!--{else}-->
        <p class="p_1">这个人很懒,暂时没有更新个人简介,快邀请Ta介绍一下自己吧!</p>
      <!--{/if}-->
    </dd>
    <dd><p class="btn">
      <!--{i<!--{if $count % 3 == 0}-->
        <!--</p></dd></dl><br>--> <!-- 每三行换行 -->
      <!--{/if}-->
    <!--{/foreach}-->

请教一下,以上数据筛选代码,什么在显示时,总有空记录在列表中?

img

请教一下如何解决?

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-03-06 08:21
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你提供的代码是基于某种模板引擎(如 Smarty 或类似语法)的模板代码,用于在网页中展示用户列表。你在使用过程中发现有空记录显示在列表中,这通常意味着在数据筛选后,某些数据字段为空或不符合条件,但仍然被渲染出来。


    问题分析

    1. foreach 循环中未正确过滤空记录

    你的代码中使用了 <!--{if $volist.avatarflag <> -1}--> 来判断是否显示该用户,但这个条件只排除了 avatarflag = -1 的用户。如果其他字段(如 username, homeurl, avatarurl, provinceid, cityid 等)为空,仍然可能被渲染成“空记录”。

    2. 未对关键字段进行有效性检查

    例如:$volist.username$volist.homeurl$volist.avatarurl$volist.provinceid$volist.cityid 等字段如果为空,会导致页面上出现空白内容。

    3. <!--{i...}--> 标签错误导致结构混乱

    你代码中有一段:

    <!--{i<!--{if $count % 3 == 0}-->
            <!--</p></dd></dl><br>-->
    

    这部分代码语法错误,可能会导致整个结构混乱,甚至生成空标签。


    解决方案

    1. 在循环中添加更全面的条件判断

    确保在渲染前,所有关键字段都非空。你可以添加如下判断:

    <!--{foreach $user as $volist}-->
      <!--{assign var="count" value=$count+1}-->
    
      <!--{if $volist.avatarflag <> -1 && !empty($volist.username) && !empty($volist.homeurl)}-->  
        <!--{assign var="outerProvinceid" value=$volist.provinceid}-->
        <!--{assign var="outerCityid" value=$volist.cityid}-->
    
        <dl>
          <dt>
            <a target="_blank" href="<!--{$volist.homeurl}-->">
              <!--{if $login.status == '0'&&$volist.groupid=="1"}-->
                <img src="/tpl/static/images/gender_<!--{if $volist.gender==1}-->1<!--{else}-->2<!--{/if}-->.gif" width="110" height="135" alt="<!--{$volist.username}-->" class="img100">
              <!--{else}-->
                <!--{avatar width='110px' height='135px' css='img100' value=$volist.avatarurl alt=$volist.username}-->
              <!--{/if}-->
            </a>
          </dt>
          <dd>
            <h3>
              <!--{if $volist.avatarflag <> '-1'}-->
                <!--{$volist.levelimg}-->
              <!--{else}-->
                <a href="http://www.71name.com/info/53.html" target="_blank"><em><font size="2px" color=red>不诚信会员</font></em></a>
              <!--{/if}-->
              <a href="<!--{$volist.homeurl}-->" target="_blank"><!--{$volist.username}--></a>
              <!--{assign var='onlinestatus' value=get_online(<!--{$volist.userid}-->)}-->
              <!--{if $onlinestatus == '1'}-->
                <a href=http://www.71name.com/index.php?c=online>
                  <span class="span_4"><img src="http://www.71name.com/tpl/wap/images/yes.gif" width="24px" height="18px" title="在线" alt="会员在线" /></span>
                </a>
              <!--{else}-->
                <span class="span_5"><img src="http://www.71name.com/tpl/wap/images/no.gif" width="24px" height="18px" title="离线" alt="离线" /></span>
              <!--{/if}-->
              <!--{if $volist.groupid>1}-->已验证<!--{else}--><a href=http://www.71name.com/usercp.php?c=vip rel=nofollow>身份待验证</a><!--{/if}-->
            </h3>
            <p>
              <!--{$volist.age}-->岁 &nbsp;
              <!--{if $volist.gender==1}-->男<!--{else}-->女<!--{/if}--> &nbsp;
              <!--{$volist.height}-->cm &nbsp;
              <a href=http://www.71name.com/user/<!--{$volist.cityid}-->>
                <!--{area type='text' value=$volist.provinceid}--><!--{area type='text' value=$volist.cityid}-->
              </a>
            </p>
            <!--{if $volist.monolog != ''}-->
              <p class="p_1"><!--{$volist.monolog|filterhtml:38}--></p>
            <!--{else}-->
              <p class="p_1">这个人很懒,暂时没有更新个人简介,快邀请Ta介绍一下自己吧!</p>
            <!--{/if}-->
          </dd>
          <dd><p class="btn">
            <!--{if $count % 3 == 0}-->
              <!--</p></dd></dl><br>-->
            <!--{/if}-->
          </dd>
        </dl>
      <!--{/if}-->
    <!--{/foreach}-->
    

    重点说明:
    !empty($volist.username)!empty($volist.homeurl) 是关键判断,避免渲染空用户名或空链接。


    2. 修复错误的 <!--{i...}--> 标签

    原代码中这一部分是错误的,建议删除或修正为正确的逻辑:

    <!--{if $count % 3 == 0}-->
      </p></dd></dl><br>
    <!--{/if}-->
    

    注意: 如果你想实现每三行换行,可以将 <!--{if $count % 3 == 0}--> 放在 <dl> 标签外面。


    3. 添加默认值处理(可选)

    如果某些字段可能为空,可以在输出时设置默认值:

    <!--{$volist.username ?: '匿名用户'}-->
    <!--{$volist.homeurl ?: '#'}-->
    

    总结

    | 问题点 | 解决方案 | |--------|----------| | 空记录显示 | 添加字段有效性判断(如 !empty()) | | 结构错误 | 修复 <!--{i...}--> 标签逻辑 | | 数据不完整 | 对关键字段设置默认值或跳过渲染 |


    如果你能提供具体的数据库字段或原始数据,我可以进一步优化这段代码。希望以上解决方案对你有帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日