EcStart PHP 技術討論論壇's Archiver

diehazard 發表於 2008-6-8 01:44

請問如何用smarty印出所有的訊息

請問各位大大,我有個的table裡面有3個欄位album_id,album_date,album_desc,如果想在smarty上卬出資料表內的所有資料請問讓如何做呢???

FIEND 發表於 2008-9-13 22:32

table 有三個欄位.

要把裡頭的內容印出來?

據我所知 smarty 只是 template .

並沒有抓資料的邏輯 .

除非你己經 assign 到 smarty了.

如果你己經 assign 到 smartyobj

你可以 

print_r($_smarty);

很久沒用 smarty 了 記憶中是 _vars 這個 attribute 內會存所有 assign 進來的 陣列

timecom 發表於 2008-9-15 10:24

請問_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>

FIEND 發表於 2008-9-15 10:48

echo "<pre>";
print_r($smarty);
把這句話放在 ASSIGN 之下

你會看到 _VARS 的 ATTRIBUTE .

試看看..

timecom 發表於 2008-9-15 11:48

【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
但放在迴圈外就只會顯示最後一筆資料
一頭霧水

FIEND 發表於 2008-9-15 14:45

[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]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.