![]() |
![]() |
![]()
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
#121
|
|
Grupa: Zarejestrowani Postów: 422 Pomógł: 0 Dołączył: 14.12.2005 Skąd: Wałbrzych Ostrzeżenie: (0%) ![]() ![]() |
hm Ty nie rozumiesz chyba jakiej zasadzie działa stronnicowanie. Proponuje Ci wpisać obrazki do tablicy i wyświetlać fotki pętlą for gdzie start i end pętli przekaże Ci klasa pagera.
edit: he sie gra sie ma (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował Balon 24.05.2007, 13:30:28 |
|
|
![]()
Post
#122
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No ale przeciez klasa ci nie podzieli pliku. Skad niby ona ma to wiedziec jak ma to zrobic? Zadaniem klasy jest zwrócenie dla Ciebie informacji, od jakiego indexu masz zaczac wyswietlac i na jakim skonczyc. A jak ty to wykorzystasz to juz Twoja sprawa.
Przyklad: Masz tablicę o 100 elementach. Ustawiles pager, by na stronie bylo po 10 elementow. Klikasz na druga strone, a klasa zwroci ci informację, ze masz wyswietlisz elementy od 11 do 20. Ale wyswietlic musisz juz ty (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) edit: cos mi sie net zmulil i Balon mnie wyprzedzil (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) edit No, niemalże rok nic nie zmieniałem w klasie. Czas wiec na nową wersję 2.5. Wersja ta niestety nie jest kompatybilna wstecz. Wszakże łatwo możecie przejsc na nowe zmiany, ale zawsze to jakieś utrudnienie Wiecej info tutaj Cytat Dalej bawiłem się Twoja klasa i brakowało mi w niej takiego bajeru, że jak mam jakieś parametry, np. index.php?a=b&c=2 to coby Pager mi się do tego dopisał. Juz jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#123
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
jak dla mnie 1 klasa. Znakomita robota. Tylko brakuje mi oprucz generowania pagera np tego co było we wcześniej wersji np Ilość wszystkich rekordów .... i możliwość zmiany tego tekstu na swój..
|
|
|
![]()
Post
#124
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Ilość wszystkich rekordów hmmm, bylo tak? Juz nawet nie pamietam pierwszej wersji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale to przeciez nie problem. Klasa zwraca ci tablicę pagera. Na podstawie tej tablicy możesz zrobic swoja wlasny wygląd taki jak chcesz. Mozesz oddziedziczyc po klasie i nadpisac metodę toString() by osiągnąć to co chcesz. Do wyboru do koloru (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#125
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
ok napisałem sobie, ale znalazłem 1 mały błąd chyba, że źle wykorzystuje klase
mam wyszukiwarkę ktora przeszukuje baze 1000 rekordów wpisze jakies tam słowo i znajdzie mi 500 rekordów i jak przechodze miedzy stronami np z 1 na 4 potem na 1 to porcjuje dla 1000. mam takie cos:
ale cos nie nie tak po przejscu dalej zmienna z posta znika :/ a powinna byc widoczna nawet po przejscu na inna podstronę pagera. Musze szukane słowo przekazywać np w GET czy klasa to obsługuje? Ten post edytował acztery 20.08.2007, 20:28:00 |
|
|
![]()
Post
#126
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ale cos nie nie tak po przejscu dalej zmienna z posta znika No tak. zmienne z posta znikają. Normalne przecież (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) POST jest widoczny tylko dla wyslanego formularza w danym żądaniu. Jesli leci POST to musisz zapamietac go np. w sesji. Później jesli nie bylo posta to pobierasz go z sesji i juz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Albo możesz formularz wysylac getem a nie postem. Klasa daje mozliwosc generowania linkow z uwzględnieniem parametrow w get. edit: tu to opisalem http://nospor.pl/formularz-i-stronicowanie...-stanu-n26.html |
|
|
![]()
Post
#127
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
czy przy pomocy tej klasy ustawie stronicowanie takie jak na wykop.pl i czy mogę ingerować w wygląd ?
|
|
|
![]()
Post
#128
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Dziwne pytanie zadajesz... ale tak - ustawisz, choć musisz sam (głowy nie dam) napisać skrypt do wyglądu.
Najlepiej ściągnij i się przekonaj ;] Pozdrawiam. |
|
|
![]() ![]()
Post
#129
|
|
Grupa: Zarejestrowani Postów: 272 Pomógł: 19 Dołączył: 29.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
Witam
Jest może możliwośc załączenia klasy pager do innej klasy ? Pozdrawiam |
|
|
![]()
Post
#130
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat czy przy pomocy tej klasy ustawie stronicowanie takie jak na wykop.pl i czy mogę ingerować w wygląd ? Mozesz. ALbo przekazujesz funkcje, ktora generuje wyglad, albo nadpisujesz klase, albo pobierasz tablice pagera i na jej podstawie generujesz wyglad. Przyklady w paczce. Cytat Jest może możliwośc załączenia klasy pager do innej klasy ? Klasa jak klasa, robisz z nią co chcesz i gdzie chcesz. Moze sprecyzuj pytanie, jesli ta odpowiedź cie nie zadowala
|
|
|
![]()
Post
#131
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 9.10.2006 Skąd: Brzozów Ostrzeżenie: (0%) ![]() ![]() |
Witam bardzo dziękuję za klase działą bardzo fajnie:)
Mam jednak dziwny zachowanie klasy. Za kazdym razem jak wywala mi taki tekst powyżej tabeli. patrzylem w kod nie ma nic takiego. Czego to moze byc blad??
Mam to połączone ze Smartami W kodzie tego tekstu nie mam na pewno . Mam kod w pliku pager.php wszytko jest ok. Jesli zmienia nazwe pliku np import.php to wywala ten blad Czy nazwy plikow maja cos do tej klasy?? Ten post edytował radziowi 26.12.2007, 16:28:39 |
|
|
![]()
Post
#132
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dziwne pytanie zadajesz... ale tak - ustawisz, choć musisz sam (głowy nie dam) napisać skrypt do wyglądu. Najlepiej ściągnij i się przekonaj ;] Pozdrawiam. No jakoś mi się nie udało. Jak zrobić aby wyswietlila sie zawsze na pasku nawigacyjnym 1-y i ostatni numer strony a pomiedzy zakresami pojawialy sie kropki np. tak: 1 ... 10 11 12 13 14 15 ... 123 Ten post edytował become 29.12.2007, 17:42:15 |
|
|
![]()
Post
#133
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Akurat jakiś czas temu przerobiłem metodę tej klasy:
W każdym razie jest z kropkami ;p |
|
|
![]()
Post
#134
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Mam jednak dziwny zachowanie klasy. Za kazdym razem jak wywala mi taki tekst powyżej tabeli. patrzylem w kod nie ma nic takiego. Czego to moze byc blad?? hmmm, czyzby BOM? Takie krzaczki co dodaje plik w kodowaniu UTF8? U mnie tego nie ma bo pisalem to normalnym edytorem, ale moze ty robiles jakiegos "Zapisz" na mojej klasie i ci sie BOM dopisal?
|
|
|
![]()
Post
#135
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 2 Dołączył: 15.08.2007 Skąd: trojmiasto Ostrzeżenie: (0%) ![]() ![]() |
witajcie mam problem nie chce wyswietlic mi sie pager
mam cos takiego
potem
i w tmplejcie czy dobrze robie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#136
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#137
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 2 Dołączył: 15.08.2007 Skąd: trojmiasto Ostrzeżenie: (0%) ![]() ![]() |
nie to nie przez to wogole jak zrobie vardump z $pagera to jest pusty
|
|
|
![]()
Post
#138
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A jakiej wersji pagera uzywasz? Najnowszej 2.5 ? No to zjadles Make(). Zajrzyj do przykladow w paczce do sciągniecia. Tam masz pokazane jak prawidłowo uzyc nowej wersji
|
|
|
![]()
Post
#139
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 2 Dołączył: 15.08.2007 Skąd: trojmiasto Ostrzeżenie: (0%) ![]() ![]() |
wersja 2.0 dla php5 takiej uzywam co jest nie tak (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
|
|
|
![]()
Post
#140
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Czemu ustawiasz licze rekordow na 3? Przeciez wczesniej wyliczasz $recordsCount, ktore jest prawdziwą liczbą rekordow i tą tę zmienną powinienes ustawic jako liczbę rekordow. Teraz ustawiasz 3. A jesli liczba rekordow jest mniejsza od liczby rekordow na stronie, to pager nic nie generuje bo nie ma sensu generowac jedną strone. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 1.09.2025 - 19:45 |