![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
info
pobierz Hejka, prezentuję klasę Pager. Umożliwia ona wygenerowanie pager'a oraz pobranie aktualnych indexów rekordów. Użycie jest proste:
Polączenie pagera z pobieraniem rekordów z bazy:
(edit: te przyklady od wersji 2.5 troche inaczej beda wygladac. poprawne kody w paczce) W podanym przykladzie brakuje oczywiscie sprawdzania, czy dane zapytanie wykonalo sie poprawnie itp. Nie podawałem tego jednak po to, by nie zaciemniać kodu. Klasa generuje unikalne dla każdego pagera (poprzez idPager'a) zmienne, dzięki czemu na stronie może byc kilka pagerów do różnych tabel. Dodatkow, jesli korzystacie z sesji, klasa pamieta strony w sesji, dzięki czemu nie tracone są informacje o aktualnej stronie przy odwiedzaniu innych linków Klasa ma 3 sposoby przechodzenia do kolejnych stron: 1) generuje własny wewnetrzny formularz i go submituje Konstruktor tylko z pierwszym argumentem 2) korzysta z zewnetrznego formularza i musi byc w nim zawarta Konstruktor z pierwszym i trzecim argumentem. Jako trzeci argument należy podać idFormularza zawnętrznego 3) poprzez linki. Należy wówczas określić drugi parametr w konstruktorze, który będzie linkiem podstawowym. Do niego dodany będzie parametr odnosnie strony. Ten sposób generuje ogólne zmienne dla pagera, przez co lepiej żeby dla niego na stronie byl tylko jeden pager. Sposób ten może być wykorzystywany przy wyszukiwarkach. To chyba wszystko. Wszelkiego rodzaju uwagi, sugestie bądź wynalezione błędy proszę zgłaszać. Wysłucham każdej (IMG:style_emoticons/default/smile.gif) Aha, sposób implemetncji klasy dostosowany do php4. Klasa nie korzysta z żadnych dziwnych funkcji, więc można łatwo dostosować ją do php5. Należy tylko metody i zmienne deklarować w sposób odpowiedni dla php5. Wszystkie metody i zmienne zaczynajace się na podkreslenie (_) oznaczają, iż są to metody i zmienne prywatne. A oto przykladowy widok pager'a: Cytat |< << < 21 22 23 24 25 26 27 28 29 30 z 200 > >> >| oczywiscie wszystko to linki oprócz aktualnej strony. Pager jest łatwo konfigurowalny. MOżecie sami okreslic liczbe rekordów na stronie, liczbę stron w pagerze itp. A pozatym niech wam dobrze służy (IMG:style_emoticons/default/smile.gif) edit (2006-04-03) W związku z licznymi uwagami, by klasa nie generowala linkow co x, tylko pare linków przed stroną i parę linków po, wprowadzilem lekkie modyfikacje. Sposób uzywania klasy nie uległ zmianie (jest kompatybilna wstecz (IMG:style_emoticons/default/smile.gif) ). Chcąc użyc nowej metody generowania linków, wystarczy wywołać metodę render() z parametrem true:
Mam nadzieję, że w ten sposób usatysfakcjonowałem parę osób (IMG:style_emoticons/default/winksmiley.jpg) edit (2006-06-13) Dawno nic nie pisalem. Czas zmienic. A wiec jest wersja 2.0 Główne zmiany: 1) odejscie od przesylania pagera formularzem 2) zapisywanie Pagera do tablicy, z której mozna samemu wygenerowac kod html Pager'a 3) PLucie wyjatkami (IMG:style_emoticons/default/smile.gif) 4) no i obecna wersja jest pod php5. Niedlugo dorobie tez wersje pod php4. Zapraszam do sciagania i testowania. W paczce jest kilka przykaldow, min. jak nalezy doczepic generowanie wlasnego kodu html. Jesli zrobicie swoja funkcje generujaca kod html i bedziecie chcieli sie nia podzielic, wyslijcie mi a ja upublikuje wersje demo z wasza funkcja i wygladem pagera. edit: 2.0 jest juz i pod php4 edit (2006-08-22) Wersja 2.01: - dorobilem na szybko ten link. teraz w konstruktorze, jesli podamy drugi parametr i bedzie w nim ciag: #PAGE# to link ten zostanie niezmieniony, czyli bedzie tak jak user podal, za wyjatkiem #PAGE#, ktore zostanie zamienione na numer strony Czyli dla przykladu co podal AxZx powinno byc:
- metoda Render moze zwracac teraz tablicę pagera zamiast kodu html. Należy ustawic na true jej trzeci parametr edit (2007-07-26) Wersja 2.5. Więcej info tu: http://nospor.pl/pager-2.5.html |
|
|
![]() |
![]()
Post
#141
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 2 Dołączył: 15.08.2007 Skąd: trojmiasto Ostrzeżenie: (0%) ![]() ![]() |
hej, oki wyswietlil mi sie poprawnie pager
dalem mu
mam aktualnie 11 rekordow, jak klikam w pager na aby mi sie wyswietlily kolejne 3 rekordy to xxx.php?pp_p=2 co dalej robic... (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#142
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat co dalej robic... odpowiem ci jak maszyna: zapytaj inaczej lub specyzuj problem bo ni w ząb nie kumam oco ci chodzi.Co dalej robic? idź na cole czy coś, pager zrobi za ciebie wszystko na co go stac. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#143
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 2 Dołączył: 15.08.2007 Skąd: trojmiasto Ostrzeżenie: (0%) ![]() ![]() |
jak chce wyswitlic kolejne 3 rekordy to pojawia mi sie xxx.php?pp_p=2 nie wiem co mam zrobic aby pager dzialal...
|
|
|
![]()
Post
#144
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
normalnie masz jakies kosmiczne problemy.
Pokaza caly kod jaki masz. pokaz rowniez kod html jaki ma w sobie Twoj $renderPager |
|
|
![]()
Post
#145
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 2 Dołączył: 15.08.2007 Skąd: trojmiasto Ostrzeżenie: (0%) ![]() ![]() |
oto moj kod :
tak jak pisalem wysiwtlaja mi sie 3 rekordy z bazy danych nastepnie poprawnie pager 1 2 3 4 > jak klikne w pager 2 to chce mnie przekierowac na show.php?pp_p=2 i pojawi sie Notice: Undefined variable: do in .... |
|
|
![]()
Post
#146
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Notice: Undefined variable: do in .... A widzisz... brakuje ci $do, wzgledem ktorej robisz switch i pager. Zakladam ze pierwotnie $do masz w url a pager generuje ci linki bez tego $do. Pisalem juz w tym temacie jak zrobic by generowalo linki takie jak chcesz. Poszukaj.A gdybyś skorzystal z wersji 2.5 to moglbys ustawic by sam automatycznie budowal linki z parametrami co byly w url |
|
|
![]()
Post
#147
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 2 Dołączył: 15.08.2007 Skąd: trojmiasto Ostrzeżenie: (0%) ![]() ![]() |
nie moge kurcze tego rozgrysc w linku mam /_admin/show.php?do=show_notice
kombinowalem cos z konstruktorem ale nie chce mi to wyjsc jak to zrobic (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) dobra poradzilem sobie dziala dzieki wielkie i pozdrawiam... |
|
|
![]()
Post
#148
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 3 Dołączył: 18.07.2005 Ostrzeżenie: (40%) ![]() ![]() |
Cześć @nospor
Korzystam z Twojej klasy 2.0 pod PHP4. Działa mi znakomicie, jednakże mam jeden problem. Otóż gdzie i jaki parametr powinienem dodać aby moje linki wyglądały tak: Kod cos.php?kategoria=3&pp=3 (gdzie kategoria=3 to id mojej kategorii, a pp=3 to numer strony) ..........EDIT przepraszam bardzo.. ;( juz sobie poradziłem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) wystarczyło zrobić tak: Kod $pager = new Pager ($_GET['id'], 'cos.php?kategoria='.$_GET['id']);
Ten post edytował Legro 22.04.2008, 18:38:56 |
|
|
![]()
Post
#149
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Super robota, świetna klasa, podziękowania dla autora
A teraz pytanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Czy jest jakiś sposób na niceurl? bo widze w TODO, ze cos ma byc z tym pomyślane |
|
|
![]()
Post
#150
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Czy jest jakiś sposób na niceurl? bo widze w TODO, ze cos ma byc z tym pomyślane Sek w tym, ze kazdy moze miec swoj wlasny niceUrl i sam z automata nie jestem w stanie go budowac. W klasie Pager.class.php masz metode makeLink() (w niej masz te TODO). Funkcja ta jest wywolywana, gdy drugi parametr konstruktora jest ustawiony na null. W metodzie tej musisz dac generowanie swojego ladnego urla. Ja tak robie u siebie w projekcie. |
|
|
![]()
Post
#151
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 4 Dołączył: 27.07.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam
ja zapodałem tą klasę do joomli i spisuje się znakomicie :] Pozdrawiam |
|
|
![]()
Post
#152
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niceurl można bardzo łatwo utworzyć
np chcemy aby nasze linki wyglądały tak, jeżeli pracujemy np. z Zend Framework http://www.example.com/news/archiwum/page/1 http://www.example.com/news/archiwum/page/2 http://www.example.com/news/archiwum/page/3 itd Najprościej uzyskać to w ten sposób $pager = new Pager('page', '/news/archiwum/page/#PAGE#'); $pager->SetActualPage($this->_request->getParam('page')); pozdrawiam |
|
|
![]()
Post
#153
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 5.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Właśnie próbuję zastosować kod Pager-a na stronie. Wykonałem na razie taki kod
CODE $pager = new Pager('p','product_list.php?group='.$_GET['group']); $pager->SetTotalRecords(1587); $pager->SetRecordsPerPage(6); $pager->Make(true); $start = $pager->GetIndexRecordStart(); $end = $pager->GetIndexRecordEnd(); $str->smarty -> assign('pager',$pager->Render()); function getClothes($kat,$start,$end) { $sql='SELECT id as id_produktu, nazwa,symbol FROM produkty WHERE gr='.$kat.' LIMIT '.$start.','.($end - $start + 1); return $db->getArray($sql); // AdoDB } Kod ma jeszcze małą niedogodność w postaci stałej liczby rekordów a w projekcie jest ona zmienna bo liczba artykułów z danej kategorii jest inna za każdym wygwenerowaniem strony. To jestem w stanie obejść bo wiem że trzeba wykonać zapytanie do BD o oblicznie ilości art z kategorii. Problem pozostaje jednak przy zmianie kategori i braku ustawionej zmiennej $_GET['ppp']. Wtedy przy przełączniu na inna kategorię numer strony pozostaje na tej samej wartości ... Nie wiem czy wyjaśniłem to dokładnie ... krótko mówiąc chodzi o to że przy przełączniu na inną stronę na której nie ma ustawionej zmiennej ppp numer strony pozstaje z poprzedniej. :-) Co tutaj trza poprawić w tym kodzie ... pomożecie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Ten post edytował szumigt 19.02.2009, 17:53:09 |
|
|
![]()
Post
#154
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Kod ma jeszcze małą niedogodność w postaci stałej liczby rekordów a w projekcie jest ona zmienna bo liczba artykułów z danej kategorii jest inna za każdym wygwenerowaniem strony. To jestem w stanie obejść bo wiem że trzeba wykonać zapytanie do BD o oblicznie ilości art z kategorii No tak, liczbe rekordow musisz wyliczac, podawalem to w przykladachCytat Problem pozostaje jednak przy zmianie kategori i braku ustawionej zmiennej $_GET['ppp']. Wtedy przy przełączniu na inna kategorię numer strony pozostaje na tej samej wartości ... Za bardzo nie wiem oco ci chodzi.
|
|
|
![]()
Post
#155
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 5.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Uuuooo matko jaka pierdoła ze mnie. Już poprawiłem.
Chodziło o to że jeśli miałem linki w postaci Link1: product.php?group=1 Link2: product.php?group=2 itd... to przy przejściu x link1 do link2 strona pozostawała taka sama jak na link1. Ale przecież wystarczyło zrobić product.php?group=1&ppp=1 i po zawodach. Chociaż nie wiem czemu klasa Pager nie ustawia sama w momencie kiedy nie jest zdefinowana zmienna ppp to przyjmuje stronę nr1... chyba że coś w kodzie pomieszałem. |
|
|
![]()
Post
#156
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Chociaż nie wiem czemu klasa Pager nie ustawia sama w momencie kiedy nie jest zdefinowana zmienna ppp to przyjmuje stronę nr1 Jak nie jest zdefiniowana to ustawia sama na 1, chyba ze juz chodziles po pagera, to wowczas pamieta stan pagera w sesji i z tego korzysta. Jakbys dla kazdej kategorii nadawal oddzielne id dla pagera, to kazda kategoria by miala swoje wlasne pamietanie, a nie tak ja teraz korzystają z tego samego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#157
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mogę się zapytać po co używasz sesji w Twoim stronicowaniu ? Do zapamiętywania, na której stronie byłem ostatnio ? Bo mi to niepotrzebne. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Czy jesli zakomentuję session_start() to narażam się na jakieś problemy ? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
I jeszcze gdzie i co w Pager.class.php dopisać: "Strona AKTUALNA_STRONA z LICZBA_STRON' (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) I jeszcze mała sugestia odnośnie Twojej klasy - dodaj pogrubienie <strong> </strong> do aktualnego numeru wyświetlanej strony w klasie Pager.class.php to znaczy:
Bo bez tego nie idzie się połapać na jakiej jest sie stronie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował nieraczek 27.02.2009, 18:50:04 |
|
|
![]()
Post
#158
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Mogę się zapytać po co używasz sesji w Twoim stronicowaniu ? Do zapamiętywania, na której stronie byłem ostatnio ? Bo mi to niepotrzebne.
Cytat I jeszcze gdzie i co w Pager.class.php dopisać: "Strona AKTUALNA_STRONA z LICZBA_STRON'
|
|
|
![]()
Post
#159
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki - a nawiasem mówiąc - dopiero teraz zwróciłem uwagę na: $pager = new Pager('idPagera'); i na to, że trzeba tu podać liczbę. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
plik ze stronicowaniem:
Drobna modyfikacja Pager.class.php:
Dodanie paru styli i oto efekt: (IMG:http://img134.imageshack.us/img134/9586/59523821.jpg) (IMG:http://img134.imageshack.us/img134/59523821.jpg/1/w272.png) Dzięki nospor - rewelacyjna jest ta Twoja klasa. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#160
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat i na to, że trzeba tu podać liczbę. Skad ten pomysl? Rownie dobrze moze tam byc "alamakota". Ja osobiscie nadaje tam wlasnie nazwy tekstowe a nie liczby
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 1.09.2025 - 21:28 |