2012-01-18 2 views
0

Я пытаюсь реализовать функцию загрузки больше в веб-приложении, которое я создаю. Когда приложение загружается, он вызывает вызов ajax для контроллера, который извлекает данные из базы данных и затем кодирует их в JSON. Я использую ограничения и смещения в запросе mysql, и я больше загружаю данные, когда пользователь прокручивается вниз. Это является метод в контроллере, который вызов Ajax делаетсяЗагрузите дополнительную функцию с помощью json

function latest_pheeds($offset = 0) { 
      //Confirm if a user is logged before allowing access 
      if($this->isLogged()) 
      { 
       //Limit 
       $limit = 20; 
       //user id 
       $user_id = $this->session->userdata('user_id'); 
       //load pheeds 
       $dt = $this->pheed_model->get_latest_pheeds($limit,$offset);  
       $data = $dt['pheeds']; //data 
       $total = $dt['total']; //Total no of rows of data 
       $return['pheeds'] = $data; 
       echo json_encode($return); //encode in json 

      } else { 
       $this->output->set_status_header('401',"Attempting Unauthorized Access"); 
      } 
     } 

Как разбить эти данные на страницы, так что я могу просто передать страницу не в качестве аргумента метода с помощью AJAX вызова Реализовать загрузить больше с помощью jQuery?

ответ

2

Вычислить $offset путем умножения (page number - 1) с $limit:

$offset = ($page - 1) * $limit; 

Так что если $ страница 1, то это будет (1 - 1) * 20 = 0 * 20 = 0,

если $ страница 2, то это будет (2 - 1) * 20 = 1 * 20 = 20

Также переименовать функциональный параметр $offset на $page

[EDIT]

Кроме того, что я хотел бы сделать, чтобы запросить один ряд больше, чем нужно, так что я могу обнаружить, если есть следующая страница, например:

$dt = $this->pheed_model->get_latest_pheeds($limit + 1,$offset); 
$next_page = false; 
if (count($dt) > $limit) { 
    $next_page = true; 
    $dt = array_pop($dt); // Excluding the last row so it is same size as $limit 
} 
// More code.... 
$return['next_page_exists'] = $next_page; 
+0

Как определить следующую страницу, Я также могу закодировать его в json для jQuery, чтобы использовать – MrFoh

+0

NOt, чтобы получить вас прямо сейчас. Вы имеете в виду, как вы могли бы знать, что такое URL следующей страницы? Итак, тогда '$ next_page_number = $ page + 1' – Kristian

+0

спасибо за помощь – MrFoh