我的站点显示一组 div,每个 div 代表一个包含五种不同类型内容的集合。每个 div 显示该集合中每种内容的项目数量。
我目前从数据库中获取每种类型的编号,如下所示:
{section name=res loop=$results}
{assign var='wn' value=$db->num_rows($db->query("select * from content where type='1' and collection_id='{$results[res].collection_id}'"))}
{assign var='nn' value=$db->num_rows($db->query("select * from content where type='2' and collection_id='{$results[res].collection_id}'"))}
ETC
问题是我们正在为每个 div 执行五个数据库查询,我们想尝试将它们合并为一个。使用 php,我们只需要做
$w=$db->query("select type, count(*) as number from content where collection_id='".$val['collection_id']."' GROUP by type");
然后使用带有“mysql_fetch_array”的“while”循环将类型数量分配给变量。
是否可以在 Smarty 中做类似的事情?Smarty 是否有 mysql_fetch_array 替代方法来访问结果集?
提前致谢!
编辑:有人建议我应该从 php 中执行此操作,但我不清楚它是如何工作的。在我的 php 文件中,我有以下内容:
<?php
$c=$db->query("select * from ".USERS_PIN."");
$cdata = array();
while ($row = mysql_fetch_array($c))
{
$cdata[] = $row;
}
$smarty->assign("results", $cdata);
$smarty->display('stack.tpl');
?>
然后在 stack.tpl 我有以下内容:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body >
<div id="ColumnContainer">
{if count($results) > 0}
{section name=res loop=$results}
{assign var='wn' value=$db->num_rows($db->query("select * from pinrest_users_pin where type='4' and board_id='{$results[res].board_id}'"))}
{assign var='nn' value=$db->num_rows($db->query("select * from pinrest_users_pin where type='5' and board_id='{$results[res].board_id}'"))}
{assign var='in' value=$db->num_rows($db->query("select * from pinrest_users_pin where (type='1' or type='2') and board_id='{$results[res].board_id}'"))}
{assign var='vn' value=$db->num_rows($db->query("select * from pinrest_users_pin where type='3' and board_id='{$results[res].board_id}'"))}
<div class='item' style="height:70px;width:350px;float:left;border:2px solid aqua" data-id="{$results[res].id}">
<div class="datadiv" >
<div style="margin-top:3px;width:40%;float:left;margin-left:15px">{$nn} news {$vn} videos {$in} images {$wn} webpages</div>
</div>
</div>
{/section}
{/if}
</div>
</body>
</html>
我认为我是从 Smarty 循环中一次构建一个 div,我别无选择,只能在循环中一次获取每个 div 的 mysql 数据。有没有办法让我获取 php 文件中每个 div 的数据,然后在循环期间分配它并在 Smarty 中使用它?