2013-03-03 3 views
0

이전다음 버튼을 사용하여 페이지 매김처럼 더 많은 데이터를 표시 할 수있는 방법을 찾으려고합니다.mySQL 이전/다음 쿼리

$query = "SELECT * 
     FROM wp_posts p 
      LEFT OUTER JOIN wp_term_relationships r ON r.object_id = p.ID 
      LEFT OUTER JOIN wp_term_taxonomy x ON x.term_taxonomy_id = r.term_taxonomy_id 
      LEFT OUTER JOIN wp_terms t ON t.term_id = x.term_id 
      LEFT JOIN wp_postmeta pm ON p.id = pm.post_id 
     WHERE p.post_status = 'publish' 
     AND pm.meta_key = 'xTraData' 
     AND p.post_type = 'post' 
     AND t.slug = 'press-coverage' 
     ORDER BY p.post_date DESC LIMIT 0,6;"; 

어떻게 내가 얻을 수있는 이전 ID다음 ID 쿼리 문자열을 새로 고치는 이전/다음 버튼을 사용할 :

쿼리이 무엇입니까?

답변

1

$ _GET 변수를 사용하여 URL에서 보낼 수 있습니다. 한계를 높이기 위해 그들을 처리하십시오.

mysql 제한은 가져올 행과 가져올 위치를 정의합니다.

그래서 0, 60 (처음)부터 시작하여 6 행을 선택합니다. 이제

$p_num = isset($_GET['pagenumber']) && (int)$_GET['pagenumber'] > 0 ? $_GET['pagenumber'] : 0; 
$p_size = 6; 

$query = "SELECT * 
     FROM wp_posts p 
      LEFT OUTER JOIN wp_term_relationships r ON r.object_id = p.ID 
      LEFT OUTER JOIN wp_term_taxonomy x ON x.term_taxonomy_id = r.term_taxonomy_id 
      LEFT OUTER JOIN wp_terms t ON t.term_id = x.term_id 
      LEFT JOIN wp_postmeta pm ON p.id = pm.post_id 
     WHERE p.post_status = 'publish' 
     AND pm.meta_key = 'xTraData' 
     AND p.post_type = 'post' 
     AND t.slug = 'press-coverage' 
     ORDER BY p.post_date DESC LIMIT ".(($p_num-1) * $p_size).",".$p_size.";"; 

이 같은 요청을 보내 : yourpage.php?pagenumber=2 그리고 페이지가 약 6 항목을 보유 할 두 번째 페이지를 쿼리합니다.

+0

그래서 pagenumber = 0이 제품 ** 0,6 **이지만 pagenumber = 1은 ** 10,6 **을 생성합니다 ** ** 5,6 **이어야합니까? – StealthRT

+0

그래서 p_num이 ** 0 **이면 해당 ** - 6 ** (0-1 * 6)? – StealthRT

+0

@StealthRT, 그건 기본 airthmetic입니다. 이것은 나를위한 코드를 작성하는 것이 아닙니다. 어쨌든 업데이트를 확인하십시오. – Starx

0

LIMIT 경계에 대한 변수를 전달할 수 있습니다. 이 경우 이전 ID 당신은 항상 당신이 LIMIT $next_ID, ($next_ID + $X)을하고 그에 따라 이전 및 다음 변수를 수정할 수 한 번에 X 기록을 원하는 경우에 null다음 ID가 7이 될 수있을 것이다.