Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Code Igniter] Pagination
z3L
post 3.12.2006, 18:58:26
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:
  1. <?php
  2. $query = $this->db->get('news');
  3. return $query->result();
  4. ?>


--------------------
...
Go to the top of the page
+Quote Post
nrm
post 4.12.2006, 11:56:11
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'];


--------------------
Go to the top of the page
+Quote Post
topgun777
post 26.10.2008, 15:11:59
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
Go to the top of the page
+Quote Post
pawkow
post 26.10.2008, 18:41:20
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']));
Go to the top of the page
+Quote Post
piker9
post 29.10.2008, 13:57:48
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 14:57