請問如何用smarty印出所有的訊息
請問各位大大,我有個的table裡面有3個欄位album_id,album_date,album_desc,如果想在smarty上卬出資料表內的所有資料請問讓如何做呢??? table 有三個欄位.要把裡頭的內容印出來?
據我所知 smarty 只是 template .
並沒有抓資料的邏輯 .
除非你己經 assign 到 smarty了.
如果你己經 assign 到 smartyobj
你可以
print_r($_smarty);
很久沒用 smarty 了 記憶中是 _vars 這個 attribute 內會存所有 assign 進來的 陣列 請問_vars要放在哪個位置??
資料出現的都會是最後一筆
不會全部出現
請問是哪裡少寫了??
感謝指教~~!!
【test.php】↓
$sql="select * from p order by p_id ASC ";
$query=mysql_query($sql);
while(list($p_id,$p_no,$p_name)=mysql_fetch_row($query)){
$a = array ($p_id, $p_no, $p_name);
};
$smarty->assign("a",$a);
$smarty->display('index.tpl');
【index.tpl】↓
<tr>{foreach from=$a item=as}
<td> {$as}</td> {/foreach}</td> echo "<pre>";
print_r($smarty);
把這句話放在 ASSIGN 之下
你會看到 _VARS 的 ATTRIBUTE .
試看看.. 【test.php】↓
$sql="select * from p order by p_id ASC ";
$query=mysql_query($sql);
while(list($p_id,$p_no,$p_name)=mysql_fetch_row($query)){
$a = array ($p_id, $p_no, $p_name);
$smarty->assign("a",$a);
$smarty->display('index.tpl');
};
將 $smarty->assign("a",$a); $smarty->display('index.tpl');
寫在迴圈裡
資料會全部出現
可是顯示的樣子就不對
因為會一直重複index
但放在迴圈外就只會顯示最後一筆資料
一頭霧水 [quote]原帖由 [i]timecom[/i] 於 2008-9-15 11:48 發表 [url=http://bbs.ecstart.com/redirect.php?goto=findpost&pid=89035&ptid=32605][img]http://bbs.ecstart.com/images/common/back.gif[/img][/url]
【test.php】↓
$sql="select * from p order by p_id ASC ";
$query=mysql_query($sql);
while(list($p_id,$p_no,$p_name)=mysql_fetch_row($query)){
$a = array ($p_id, $p_no, $p_name);
$smarty->a ... [/quote]
因為 SMARTY 的 TPL 你要跑 LOOP 你必需塞給它的是一個二唯陣列 的值 給 LOOP.
你的迴圈因為一直重覆把值塞到同一個變數
所以不會產生一個二維陣列 .
所以怎麼出來都是一個值.
[color=Red]
建議您在寫程式之前都要畫流程圖 , 加強自己的邏輯能力 .
[/color]
我會這樣寫 ....[code]$sql = 'SELECT * FROM jade_database_server' ;
$result=mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$data[] = $row ;
};
mysql_free_result($result);
$smarty->assign("record",$data);
echo "<pre>";
print_r($smarty->_tpl_vars); // 這句話可以驗證 ASSIGN 進去 TPL_VAR 的值 是不是對的 .
exit ;
$smarty->display('index.tpl');[/code]
頁:
[1]