2011-01-24 4 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クエリロジックを分離することをお勧めします。この具体例

しかし、あなたは$res以来db_fetch_objectを使用する必要があるだけで 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には最適です。

代わりに、モジュールを使用して必要なコンテンツを生成し、それをテーマレイヤに渡します。この場合、すでにビューモジュールを使用してクエリを生成している場合は、ビューで実行され、ページまたはブロック表示にデータが渡されます。

それ以外の場合、クエリをデバッグするには、phpMyAdminまたは "drush sqlq"のようなコードを使用して、コードに関係なくクエリを実行してみてください。

関連する問題