Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Code Igniter] Pagination
Forum PHP.pl > Forum > PHP > Frameworki
z3L
Witam.

Mam pytanie dot. klasy pagination w frameworku Code Igniter:

Otóż chciałem użyć owej klasy z zapytaniem mysql, a dokładniej wyświetleniem newsów, chciałem zrobić, by można było wyświetlić tylko 5 newsów na stronę. Oczywiście napisałbym to na czystym pliku, lecz chciałem użyć klasy pagination.

Moje zapytanie:
  1. <?php
  2. $query = $this->db->get('news');
  3. return $query->result();
  4. ?>
nrm
a pytanie gdzie? z czym problem?

LIMIT od, ile

od = aktualna strona
ile = $config['per_page'];
topgun777
abys dobrze użył paginacji potrzebne będą 2 zapytania jedno zliczające ilość wszystkich rekordów zeby wyliczyc ilość stron w paginacji a nastepnie zapytanie typu offset xx limit xx gdzie ofset to bedzie miejsce poczatkowe dla kazdej kolejnej strony a limit bedzie ilością rekordów na strone, w kontrolerze zbuduj funkcje z paramtrem litmit i offset i nastepnie bedziesz w niej wywyoływał baze z modelu przez podanie tych danych i w konfigu do pagination musisz jeszcze potem podac cos takiego zeby linki byly typu: index.php /stronicowanie/XX gdzie XX to bedzie numer strony. Jakbys mial problemy to chętnie pomoge ostatnio przerabialem w firmie ten temat i jest na bieząco:)


pozdro
pawkow
Ja to rozwiązałem tak:

Kod
<?php
   class mUsers extends Model
   {
      
       function mUsers()
       {
           parent::Model();
       }
          
       function get_users_limit($num = 5, $offset = 0)
       {
           $this->db->select('id, login');
           $this->db->orderby('login', 'asc');
           return $this->db->get('users', $num, $offset);
       }
  
       function count_users()
       {
           return $this->db->count_all('users');
       }
  
   }
   ?>


Kod
$this->load->library('pagination');
  
   $config['base_url'] = base_url() . 'admin/lista_uzytkownikow';
$config['total_rows'] = $this->musers->count_users();
$config['per_page'] = 15;
   $config['num_links'] = 10;
$config['uri_segment'] = 3;
   $config['first_link'] = 'Start';
   $config['last_link'] = 'Koniec';
  
   $this->pagination->initialize($config);
  
   $data['pagination'] = $this->pagination->create_links();
   $data['users'] = $this->musers->get_users_limit($config['per_page'],
$this->uri->segment($config['uri_segment']));
piker9
A co w przypadku, gdy zapytanie jest bardziej skomplikowane i odpytuje kilka tabel?
Najlepiej by było aby użyć <b>$query->num_rows();</b> tylko w jakiej kolejności?

1. Ustawiamy paginację
2. Zapytanie z ustawieniami paginacji łącznie z <b>total_rows</b>

I tu jest problem total rows dostaniemy dopiero po wykonaniu zapytania, a nie przed ?

Tworzyć jeszcze jedno bardzo podobne zapytanie tylko bez dodatkowych opcji typu
LIMIT od, ile ? To trochę śmieszne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.