首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SMARTY模板中准确显示循环数据时PHP显示

在SMARTY模板中准确显示循环数据时PHP显示
EN

Stack Overflow用户
提问于 2021-01-16 20:14:14
回答 1查看 43关注 0票数 1

在下面的代码中,当我尝试将$viewAd值分配给模板文件并显示结果时,它不会显示分配给模板时的准确结果。但是,当我直接在PHP页面中回显$viewAd时,它会在页面顶部显示准确的所需结果。我已经给出了下面的截图。

我的PHP结构是这样的:

代码语言:javascript
运行
复制
$cat = $pdo->prepare("SELECT QUERY HERE");
$cat-> execute();

while($s = $cat->fetch()){
  $ads = $pdo->prepare("ANOTHER SELECT QUERY HERE");
  $ads-> execute();
  $ads_count = $ads->rowCount();

  if($ads_count > 0){
    $viewAd = "<h4>".$s['pcat_category']."</h4>"; // Echoing Category Name
    while($a = $ads->fetch()){
      if(isLoggedIn()){
        // If logged in display Ads relevant to members
        $viewAd .= 'SOME HTML DATA';
        foreach($membershipData as $mbs){
          $viewAd .= 'EXTENDED HTML DATA';
        }
        $viewAd .= 'CLOSING HTML DATA';
      }else{
        // If not logged in display ads relevant to outsiders
        $viewAd .= 'SOME HTML DATA';
        foreach($membershipData as $mbs){
          $viewAd .= 'EXTENDED HTML DATA';
        }
        $viewAd .= 'CLOSING HTML DATA';
      }
    }
    echo $viewAd; // RETURNS DESIRED RESULT ABOVE THE TEMPLATE ON TOP
  }
}
$smarty->assign('viewAds', $viewAd); // ASSIGNED TO TEMPLATE BUT DOES NOT RETURN DESIRED RESULT

屏幕截图1:正确的结果与直接的PHP回显显示每个类别中的广告

屏幕截图2:当分配给模板的变量仅显示包含广告的最后一个类别时,结果不正确

为什么当我将变量赋值给模板时,我得不到相同的结果?我还尝试了数组方法,在while循环之前声明了$viewAds = array(),后来又赋值了$viewAds[] = $viewAd。然后在tpl文件中,我尝试使用foreach循环回显这个值,像这样的{foreach $viewAds as $vas}{$vas}{/foreach},但仍然没有显示每个类别和广告(与第一个截图中的预期结果一样)。由于它在使用数组时也不起作用,所以我删除了它,并尝试直接使用{$viewAds}和foreach进行回显。不走运,什么都不能用。All在第二个屏幕截图中给出结果。仅显示包含广告的最后一个类别。但是,由于PHP文件中的直接回显给出了正确的结果,因此我确信我的PHP逻辑是正确的。只是我不能在模板文件中正确地分配结果并显示它。我在这里犯的错误是什么?我是不是错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-16 20:29:30

在开始第一个循环之前,您需要初始化$viewAd,如下所示:

代码语言:javascript
运行
复制
 $viewAd = ""; 

然后,每个类别都应该附加到$viewAd

代码语言:javascript
运行
复制
 $viewAd .= "<h4>".$s['pcat_category']."</h4>";

这样,所有类别都将包含在最终的HTML中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65749530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档