私のサイトには一連の div が表示されており、それぞれが 5 つの異なるタイプのコンテンツを保持するコレクションを表しています。各 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}'"))}
等
問題は、div ごとに 5 つのデータベース クエリを実行していることです。これらを 1 つにまとめたいと考えています。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 ループから一度に 1 つずつ div を構築しているので、ループ内で各 div の mysql データを一度に 1 つずつ取得するしかないと考えました。php ファイルの各 div のデータを取得し、それを割り当てて、ループ中に Smarty で使用する方法はありますか?