![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 54 Pomógł: 4 Dołączył: 22.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
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:
-------------------- ...
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
a pytanie gdzie? z czym problem?
LIMIT od, ile od = aktualna strona ile = $config['per_page']; -------------------- |
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 27.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 7 Dołączył: 30.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
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'])); |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 14:57 |