2011-01-24 3 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 그냥 대신

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

database query result resource

이 있습니까 포함 사용할 필요가

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

그것은 당신의 템플릿 파일에서 직접 쿼리를 넣어 피하기 위해 일반적으로 가장 좋습니다. separate logic and presentation에 가장 좋습니다.

대신 모듈을 사용하여 필요한 콘텐츠를 생성하고 테마 레이어로 전달하십시오. 이 경우 이미 조회 모듈을 사용하여 조회를 생성 한 경우 조회가이를 실행하여 페이지 또는 블록 표시로 데이터를 전달하게하십시오.

그렇지 않으면 쿼리를 디버깅하려면 phpMyAdmin 또는 "drush sqlq"와 같은 코드를 통해 쿼리를 실행 해보십시오.

관련 문제