2013-06-08 2 views
1

이상한 행동을하는 코드 세그먼트를 만들려고합니다.SQL 항목에 대한 무한 스크롤

콘텐츠를 표시하기 위해 JQuery 석공 술 플러그인에 Paul Irish 무한 스크롤을 사용하고 있습니다.

함유량은 SQL 뽑아이 페이지는 데이터베이스로부터 콘텐츠의 제 20 개 행을로드 수단 현재 일련 번호 20

을 갖고, 그 다음 스크롤링에 다음 20을 적재한다.

몇 페이지에이 기능이 있으며 한 페이지 만 제외하고 제대로 작동합니다.

최근 20 개의 게시물을로드하는 대신이 특정 페이지의 모든 게시물을로드합니다. 일부에는 5000 개 이상의 게시물이 있으므로 문자 그대로 페이지가 손상됩니다. 상상할 수있는 중요한 문제.

나는 예외를 찾기 위해 코드를 수정하려고 시도해 왔고 하나의 특정 세그먼트로 코드를 좁혔다.

function getEachBoardPins($id,$limit=false) 
{ 
    $sql = "SELECT 
        * 
       FROM 
        pins 
       WHERE 
        board_id = $id 
       ORDER BY time DESC"; 
    if($limit) 
     $sql .=" LIMIT 0 ,$limit" ; 
    $query = $this->db->query($sql); 
    return $query->result(); 
} 

을 나는 그것이 함께 할 수 알고 :이 작동하지 않는 페이지의 코드가

function index() { 
    $userID = false; 
    $order = false; 
    $limit = $this->config->item('pin_load_limit'); 
    $page = $this->uri->segment(3, 1); 

    $nextOffset = ($page -1) * $limit; 
    $nextPage = $page +1; 
    $sql = "SELECT * 
       FROM 
        pins"; 

    if ($userID) 
     $sql .= " WHERE 
        user_id= $userID "; 

    if ($order) { 
     $sql .= " ORDER BY 
        ' $order'"; 
    } else { 
     $sql .= " ORDER BY time DESC"; 
    } 
    $sql .= " LIMIT $nextOffset,$limit"; 

    $query = $this->db->query($sql); 
    if ($query->num_rows() > 0) { 
     $row = $query->result(); 
    } 

입니다 :

작동 페이지에 사용 된 코드입니다 핀로드 한도하지만 난 성공하지 않고 후자에 코드를 추가하려했습니다.

아마도 여기에 더 많은 것을 알고있는 누군가가 더 나은 통찰력을 제공 할 수 있습니까?

답변

0

"getEachBoardPins"함수를 호출 할 때 두 번째 매개 변수를 설정하지 않으므로 기본적으로 false로 설정되어 있으므로 제한 SQL이 추가되지 않으므로 매우 유용하다고 상상해보십시오. select 문은 전체 명령문을 실행합니다.

+0

나는 무엇을 의미하는지 보지만 'if'절없이 $ limit 변수를 문장에 넣으려고 시도했지만 여전히 마지막 20 개가 아닌 모든 행을 가져옵니다. –

+0

나는 오해하고 있습니다. 두 번째 매개 변수를 추가하면 다음과 같이 정의됩니다. $ limit = $ this-> config-> item ('pin_load_limit'); 페이지는 20 만로드됩니다. 어느 것이 'pin_load_limit'이지만 더 이상 스크롤하지 않습니다. –