안녕하세요. Kboard 게시판 리스트에 대한 질문입니다.
리스트 상단에 가장 조회수가 많은 글 한개와 가장 최근글 한개를 표시하고 싶습니다.
제가 초보자라 어디부터 수정해야 할지 잘 몰라서 질문드립니다.
스킨의 list.php 파일에 프로그램을 새로 작성해주셔야 할 듯합니다.
음.. 초보분이 직접하긴 매우 어려울거에요;;
list.php 파일에서 아래 코드를 테스트 해봐주세요~
$top_content = new KBContent();
$top_content->initWithRow($wpdb->get_row("SELECT * FROM `{$wpdb->prefix}kboard_board_content` WHERE `board_id`='1' ORDER BY `view` DESC LIMIT 1"));
echo $top_content->title
`board_id`='1' 이쪽에서 숫자는 게시판 ID값입니다. 적절히 수정해주세요.
`view` DESC 이건 view를 기준으로 내림차순으로 정렬하라는 뜻입니다.
LIMIT 1 이렇게 해주시면 하나의 레코드만 가져올 수 있습니다.
안녕하세요?
위의 코드를 테스트해봤는데요, 위의 코드에서 get_row를 사용하면 여러 개를 지정해도 하나만 불러오네요. 대신에 get_results를 사용하면 여러 개를 불러옵니다.
get_results를 사용하고 print_r(..)을 통해 출력해보면
위와 같이 여러 개가 출력되고, get_row를 사용하면 데이터가 하나만 표시됩니다.
하지만 get_results를 사용할 경우 개별 데이터(글 제목 등)를 top_content->~ 방식으로 불러올 수가 없네요(get_row일 때는 top_content->... 형식으로 정상 작동)....
이 경우 어떻게 Loop 시키고(foreach(...)나 while($content = $list->...) 형식으로 제대로 안 되네요)개별 데이터는 어떤 방식으로 불러와야 하는지 조언 부탁드립니다.
감사합니다.
Sky7님 우선 $wpdb 메소드에 설명을 드리면요.
$wpdb->get_row() 또는 $wpdb->get_results() 이건 워드프레스 기능입니다.
get_row 이건 하나의 레코드만 가져오는 메소드구요, get_results 이건 array로 여러 레코드를 가져오는 메소드입니다.
중요한건 get_row 이런 쿼리로 여러 레코드를 가져온다해도 결과적으로는 하나의 레코드만 전달합니다.
그리고 get_results 이건 하나의 레코드만 가져오는 쿼리여도 결과적으로는 무조건 array로 가져옵니다.
두 메소드 사용법은 전혀다릅니다^^
$top_content = new KBContent();
$results = $wpdb->get_results(...);
foreach($results as $key=>$row){
$top_content->initWithRow($row);
echo $top_content->title;
}
get_results로 레코드를 가져올때는 위처럼 foreach를 사용해보세요^^
친절한 설명 대단히 감사합니다^^