2010-03-30 10 views
5

Dobrze, postępowałem zgodnie z instrukcjami w tym przykładzie. Ostatecznie, działa paginacja.Pagodowanie kodu - jestem zakłopotany

Wyświetlane są wszystkie wymienione strony: 1 | 2 | > | Ostatni, ubiegły, zeszły. Itd.

Pierwsza jest aktywna, tak jak powinna być. Zrobiłem również poprawnie zapytanie, ponieważ każdy link da prawidłowe zapytanie.

Jednak po kliknięciu na numer 2, pokaże mi on prawidłowy następny zestaw produktów, ale wyświetli stronę z pierwszej strony.

Niezależnie od tego, jaki przycisk kliknięcia kliknę, zwróci główny zestaw stronicowania: 1 (wybrano) | 2 | > | Ostatni, ubiegły, zeszły. To się nigdy nie zmienia! Tracę cierpliwość, czy ktoś może mi pomóc?

+1

Czy ty opublikuj swój kod do paginacji, abyśmy mogli zorientować się, co się dzieje. – Cory

Odpowiedz

9

Myślę, że mogę wiedzieć o co chodzi. Musisz poinformować bibliotekę stronicowania, który segment adresu URL przechowuje przesunięcie.

Na przykład, jeśli adres URL jest/produkty/przeglądania/all/20, trzeba powiedzieć CodeIgniter że 4. Segment posiada offset

$config['uri_segment'] = 4; 

domyślnej dla biblioteki jest URL odcinka nr 3. Jeśli przesunięcie w adresie URL nie znajduje się na pozycji 3 i zapomnisz o tym poinformować bibliotekę stronicowania, zinterpretuje on niewłaściwy segment jako przesunięcie. Może to prowadzić do opisanego powyżej zachowania, które nie wydaje się zmieniać w paginacji.

+0

Zrobiłeś to! Nie znalazłem tej konfiguracji w dokumentacji, ale sprawiło, że działa poprawnie !! WOOHOO! Rządzisz. – willbeeler

+2

To świetnie. Wiem to tylko dlatego, że sam przeżyłem ten sam ból, kiedy zacząłem używać paginacji :-) Pamiętam, że zachowałem się tak samo i zastanawiałem się, co się do diabła dzieje. –

0

Który przykład?

echo $this->pagination->create_links(); 

^^ Czy to jest twój zdaniem?

1

Natknąłem się na ten sam błąd i udało mi się go naprawić. Wystarczy pomyśleć o udostępnieniu skryptu kodu, może ktoś będzie mógł z niego skorzystać.

=====> Regulator

// Default function 
function index() 
{ 
    // Display listing  
    $this->listing();   
} 

function listing($argDataArr = array()) 
{ 

    // Initialize pagination 
    $pageArr['base_url'] = $this->config->item('categoryBeAction')."/listing"; 
    $pageArr['total_rows'] = 15; //assume 
    $pageArr['per_page'] = 5; //assume 
    //You need to tell the pagination library which segment of the URL holds the offset.   
    $pageArr['uri_segment'] = 4; //URL eg: http://localhost/myproject/index.php/backend/category/listing/5 
    $this->pagination->initialize($pageArr); 

    // Get list of categories 
    // Create data array and pass data to get function 
    $dataArr['limitRows'] = $pageArr['per_page']; 
    $dataArr['limitOffset'] = $this->uri->segment(4); //the dynamic value from this segment will be used as offSet 
    $viewArr['listArr'] = $this->category_model->get($dataArr); 

    //rest of the code... 

} 

======> Modele

function get($argDataArr = array()) 
{ 

    //Select the fields required 
    $this->db->select('id, name, parent_id, status'); 
    $this->db->from($this->config->item('tbl_category','dbtables')); 

    $this->db->where('parent_id', $parentId); 
    $this->db->limit($argDataArr['limitRows'], $argDataArr['limitOffset']); 
    $this->db->order_by("name", "asc"); 
     $query_result = $this->db->get(); 

    return $query_result; 
} 

======> Zobacz strona

  <!-- Pagination -->      
      <tr> 
      <td align="right"> 
       <?php echo $this->pagination->create_links(); ?>       
      </td> 
      </tr> 
Powiązane problemy