2011-01-24 28 views
0

我重寫了一個node.tpl,並且需要使用由視圖生成的查詢的db的一些結果。 這裏是我使用的代碼:重寫node.tpl中的查詢

<?php $res = db_query("SELECT node.nid AS nid, node.title AS node_title FROM node node LEFT JOIN content_field_is_popular node_data_field_is_popular ON node.vid 
= node_data_field_is_popular.vid WHERE (node.type in ('article_thisweekend')) AND (UPPER(node_data_field_is_popular.field_is_popular_value) 
= UPPER('yes'));"); 
    foreach($res as $reco){ 
     print ($reco->nid); 
    } 
    ?> 

但我沒有得到任何結果。 我缺少什麼?

謝謝

回答

2

Matt V.有很好的建議,你應該嘗試從SQL查詢邏輯中分離視圖模板。

對於這個具體的例子,雖然,你需要使用db_fetch_object因爲$res只包含 database query result resource

而不是

foreach($res as $reco){ 
    print ($reco->nid); 
} 

while ($reco = db_fetch_object($res)){ 
    print ($reco->nid); 
} 
2

通常最好避免直接在您的模板文件中查詢。最好到separate logic and presentation

而是使用一個模塊來生成您需要的內容並將其傳遞給主題圖層。在這種情況下,如果您已經使用Views模塊生成查詢,那麼讓Views爲您運行它並將數據傳遞給頁面或塊顯示。

否則,要調試查詢,請嘗試通過諸如phpMyAdmin或「drush sqlq」之類的代碼運行獨立於代碼的查詢。