我的網站顯示一組div,每個div代表一個包含五種不同類型內容的集合。每個div顯示每個類型的內容在該集合中有多少項。如何從Smarty內部訪問Mysql結果集?
我目前得到每個類型的數量從數據庫中,像這樣:
{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}'"))}
等
的問題是,我們正在做的5個數據庫查詢,對於每個DIV,我們想嘗試將它們合併爲一個。使用php,我們只需要做
$w=$db->query("select type, count(*) as number from content where collection_id='".$val['collection_id']."' GROUP by type");
然後用「while」循環和「mysql_fetch_array」將類型數量分配給變量。
是否有可能在Smarty中做類似的事情?是否有一個mysql_fetch_array替代Smarty來訪問結果集?
在此先感謝!
編輯:有人建議,我應該從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>
我計算過,是我是從建築的div一次一個Smarty循環,我別無選擇,只能在循環中一次獲取每個div的mysql數據。有沒有辦法讓我在php文件中爲每個div獲取這些數據,然後在循環中將它分配並用於Smarty?
對不起,我不是很清楚,你能告訴我們你的模板看起來像什麼,或者你想要它看起來像什麼? – Anas 2012-08-16 23:23:24
Anas,我剛剛添加了php和tpl代碼。 – Phil 2012-08-17 00:06:40
讓我們繼續聊天,以便我可以理解您的問題:http://chat.stackoverflow.com/rooms/15442/how-does-one-access-a-mysql-result-set-from-within-smarty – Anas 2012-08-17 00:36:22