Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Uniwersalny system paginacji/stronnicowania
b_chmura
post
Post #1





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


By zaoszczędzić miejsca usunąłem starą funkcję (nowa w poniższych postach)

Ten post edytował b_chmura 16.12.2007, 15:07:59
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
devnul
post
Post #2





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


wiem że to nie oceny - ale to co napisałeś w temacie wątku to jest chyba jakiś żart w stosunku do tego co tu zobaczyłem. gdzie tu ten wspomiany uniwersalizm? ja tu widze same ograniczenia i minusy. Było Ci potrzebne - ok - fajnie - ale zanim się czymś podzielisz (tym bardziej wrzucając to w gotowe rozwiązania - bo z tąd często się "młodzi" uczą to zastanów się troche. I co to za pomysł z tym stronicowaniem na przyciskach formularza (nie mówiąc o użyciu Skryptów JS do tego celu)?

A później się dziwią że sieć wygląda jak wygląda :/


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
b_chmura
post
Post #3





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


Cytat
gdzie tu ten wspomiany uniwersalizm?


Funkcje można zastosować między innymi przy bazie MySQL, zwykłych plikach (między innymi ponieważ nie operowałem na innych bazach i nie wykluczam ze i w nich śmiało można funkcje wykorzystać)

Cytat
I co to za pomysł z tym stronicowaniem na przyciskach formularza


Myślę ze kwestia wyglądu jest indywidualna, ja przedstawiłem w formie formularza ze względu na estetykę oraz listy wysuwanej.

Cytat
(nie mówiąc o użyciu Skryptów JS do tego celu)?


a w czym to przeszkadza?
pożądany efekt przy małej ilość kodu


Cytat
wiem że to nie oceny

Nic złego w komentowaniu "gotowego rozwiązania".

Ewentualnie poproszę o przeniesienie tematu
Go to the top of the page
+Quote Post
devnul
post
Post #4





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


No muszę się poporstu odnieść do tego co napisałeś.

Cytat
Funkcje można zastosować między innymi przy bazie MySQL, zwykłych plikach (między innymi ponieważ nie operowałem na innych bazach i nie wykluczam ze i w nich śmiało można funkcje wykorzystać)

A co przepraszam paginator ma do tego jakie dane ja mu podam? jesli mam taki kaprys to moge podawać mu dane czysto losowe i też ma działać exclamation.gif
Więc Twoje wytłumaczenie o uniwersalizmie ze względu na różnorodność źródeł danych z których paginacja może dotyczyć jest niewiele warte

Cytat
Myślę ze kwestia wyglądu jest indywidualna, ja przedstawiłem w formie formularza ze względu na estetykę oraz listy wysuwanej.

skoro tak to czemu pchasz tę kwestię do kodu funkcji i każesz tym którzy chcieli by ją zmienić grzebać w tym kodzie zamiast dac możliwośći ustalenia sposobu wyświetlania jako dajmy na to parametr. Nie wspominam już nawet o fakcie że przyciski formularza nie służą do tego żeby robić z nich odniesienia do stron. Zapraszam do zapoznania się z dokumentacją W3C.
Cytat
a w czym to przeszkadza?
pożądany efekt przy małej ilość kodu

Bardziej porządany można uzyskać stosując linki - nie wszystkie agenty użytkownika (przeglądarki, czytniki ekranowe, boty indeksujące dla potrzeb wyszukiwarek) mają włączoną obsługę javascript, twoje rozwiązanie powoduje że kolejnych podstron bot przeszukujący internet (np GoogleBot) nie zindeksuje - na czym straci właściciel strony. To także utrudnienie w dostępności dla osób ktore nie korzystają ze zwykłych przeglądarek a np. czytników ekranowych (osoby niewidome i niedowidzące) lub zwyklłych przeglądarek tekstowych (lynx itp - sam też czasem z tego korzystam pracując np via ssh). I nie wiem czy małą ilością kodu można nazwać przycisk wraz z javascriptem który ma dokonać przekierowania <a href="link">X</a> to znacznie mniej kodu i zadziała WSZĘDZIE!

Nie rozumiem czesz czemu decydujesz z góry o tym z kąd pobrane zostaną informacje o stronie na której się znajdujemy ($_GET['page']) a co jeśli np będę używał mod rewrita do maskowania linków i chiciałbym żeby miały np taką postać http://www.php.pl/strona/numer_strony ?

Twój kod jest poprostu zły - możliwe że Ciebie on satysfakcjonuje - ale jak już pisałem nie dawaj złego przykładu innym. SUgeruje przepisanie go na nowo - tym razem - po dłuższym przemyśleniu


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(b_chmura @ 16.12.2007, 13:55:09 ) *
Funkcje można zastosować między innymi przy bazie MySQL, zwykłych plikach (między innymi ponieważ nie operowałem na innych bazach i nie wykluczam ze i w nich śmiało można funkcje wykorzystać)

Przecież skoro w samej paginacji nie odwołujesz się ani do bazy ani txt to przecież to może działać na wszystkim. Nie rozumiem skąd wątpliwości.

Ale do tematu: po co babrasz się z $_GET w ciele funkcji? Poza tym moim skromnym zdaniem funkcja powinna zwracać tablicę elementów, a nie gotowy kod. Później ta tablica powinna zostać obrobiona w widoku wedle uznania (normalne linki, buttony - jak kto chce).

Jestem tego samego zdania co ~devnul: fajnie, że Tobie się przydało, ale raczej mało kto uzna to za "Uniwersalny system paginacji/stronnicowania".
Go to the top of the page
+Quote Post
b_chmura
post
Post #6





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


w takim razie spróbuje sie zastosować sie do Twoich uwag.

Wytłumacz mi tylko to:
Cytat
A co przepraszam paginator ma do tego jakie dane ja mu podam? jesli mam taki kaprys to moge podawać mu dane czysto losowe i też ma działać


ad. mod_rewrite
Kod
RewriteRule ^strona/([0-9]*?)$ example.php?page=$1
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #7





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Taki komponent powinien mieć oddzieloną logikę od widoku, powienien mieć jasny interfejs. Ta funkcja to jest kod, który przy każdym projekcie trzeba przerabiać na swoje potrzeby, a jeśli potrzebne jest np 5 różnych wyglądów paginacji, to trzeba tą funkcję przepisać 5 razy. Jeśli potem zechcesz zmienić coś w jej logice, to zmiany będziesz musiał zastosować w pięciu miejscach. Podzielam zdanie kolegów - dobrze, że spełnia Twoje wymagania, ale szkoda, że tylko Twoje.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
devnul
post
Post #8





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


Cytat(b_chmura @ 16.12.2007, 13:04:59 ) *
w takim razie spróbuje sie zastosować sie do Twoich uwag.

Wytłumacz mi tylko to:
ad. mod_rewrite
Kod
RewriteRule ^strona/([0-9]*?)$ example.php?page=$1

widze że upierasz się przy swoim


ja np używam takiego kodu (który później obrabia mi odpowiednio router - ale to inna hisotoria) do maskowania adresów
powiedz mi w takim razie jakie to tu ma zastosowanie?
Kod
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
</IfModule>

Lub prościej: co jesli w kodzie już tysiąc razy używam np zmiennej $_GET['p'] do zdefiniowania numeru strony z jakiej korzystam?

Pomyśl dwa razy nim tym razem odpoweisz bo jak widzisz nie jestem osamotniony w mojej opini

Ten post edytował devnul 16.12.2007, 14:32:03


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
b_chmura
post
Post #9





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


Miałem na myśli te słowa:
Cytat
A co przepraszam paginator ma do tego jakie dane ja mu podam? jesli mam taki kaprys to moge podawać mu dane czysto losowe i też ma działać


Paginator (poniższy) wymaga od użytkowników jedynie sumę wszystkich rekordów i aktualną stronę.

  1. <?php
  2. function paginator($cnt, $Astrona = 1, $Istrona = 5)
  3. {
  4. if(!empty($cnt) or !empty($Istrona)) $CntStr = ceil($cnt/$Istrona);
  5. if($Astrona <= 0) $Astrona = 1;
  6. if($Astrona > $CntStr) $Astrona = $CntStr;
  7.  
  8. $Pstrona  = (($Astrona-1) >= 1)? ($Astrona-1): FALSE;
  9. $Nstrona  = (($Astrona+1) <= $CntStr)? ($Astrona+1): FALSE;
  10. $ALLstrona = range(1, $CntStr);
  11. $start  = $Istrona*$Astrona-$Istrona;
  12.  
  13. if($Istrona > ($cnt-$start)) $Istrona = ($cnt-$start);
  14.  
  15. $out['cnt']  = $cnt;
  16. $out['CntStr'] = $CntStr;
  17. $out['start']  = $start;
  18. $out['Istrona']  = $Istrona;
  19. $out['Pstrona']  = $Pstrona;
  20. $out['Astrona']  = $Astrona;
  21. $out['Nstrona']  = $Nstrona;
  22. $out['ALLstrona'] = $ALLstrona;
  23.  
  24. return $out;
  25. }
  26.  
  27. $cnt = $cnt; //suma wszystkich rekordów
  28. $po_ile = $po_ile; //ile rekordów na pojedynczej stronie
  29. $page  = $page; //numer aktualnej strony np $_GET['page']
  30. $out = paginator($cnt, $page, $po_ile);
  31.  
  32. echo '<pre>';
  33. echo 'Liczba rekordów - '.$out['cnt'].'<br />';
  34. echo 'Liczba Stron  - '.$out['CntStr'].'<br />';
  35. echo 'Od którego rekordu zacząć - '.$out['start'].'<br />';
  36. echo 'Ile rekordów na pojedyńczej stronie - '.$out['Istrona'].'<br />';
  37. echo 'Poprzednia strona - '.$out['Pstrona'].'<br />';
  38. echo 'Aktualna strona - '.$out['Astrona'].'<br />';
  39. echo 'Następna strona - '.$out['Nstrona'].'<br />';
  40. echo 'Numery stron  - ';
  41.  
  42. foreach($out['ALLstrona'] as $nr){ echo $nr.', '; }
  43.  
  44. echo '</pre>';
  45. ?>


Ten post edytował b_chmura 18.12.2007, 03:19:50
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Teraz to już idzie w zdecydowanie lepszą stronę.

Pozdrawiam


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
devnul
post
Post #11





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


iść może i idzie ale nadal jest to bardzo dalekie od ideału. Read about OOP


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
phpion
post
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hmmm, czy taki zapis:
  1. <?php
  2. $page = ($page <= 0)$page = 1: $page;
  3. ?>

nie jest równoznaczny z:
  1. <?php
  2. $page = ($page <= 0)true : $page;
  3. ?>

? Chyba powinno być:
  1. <?php
  2. $page = ($page <= 0)? 1 : $page;
  3. ?>

Poza tym to troszkę nie ma sensu. Wystarczyłoby:
  1. <?php
  2. if ($page <= 0) $page = 1;
  3. ?>
Go to the top of the page
+Quote Post
b_chmura
post
Post #13





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


tak, powinno być
  1. <?php
  2. $page = ($page <= 0)? 1 : $page;
  3. ?>


nie zastosowałem
  1. <?php
  2. if ($page <= 0) $page = 1;
  3. ?>

ponieważ wizualnie mi nie pasowało tongue.gif


Jeśli chodzi o OOP to niestety ale nie potrafią i przede wszystkim nie rozumiem. (wogóle nie rozumiem w czym byłoby to lepsze...)
Go to the top of the page
+Quote Post
Moli
post
Post #14





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Idziesz w dobrym kierunku, ale może użyjesz OOP.
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(b_chmura @ 16.12.2007, 17:45:26 ) *
ponieważ wizualnie mi nie pasowało tongue.gif

Nie uważasz, że to głupi argument? Po co w 99% przypadków robić $page = $page?

Cytat(Moli @ 16.12.2007, 17:46:16 ) *
...może użyjesz OOP.

Bez komentarza.

Ten post edytował phpion.com 16.12.2007, 15:49:36
Go to the top of the page
+Quote Post
devnul
post
Post #16





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


Cytat
Jeśli chodzi o OOP to niestety ale nie potrafią i przede wszystkim nie rozumiem. (wogóle nie rozumiem w czym byłoby to lepsze...)
dobrze napisane - łatwiej konfigurować klasy, dostarczać pobiearć dane itp. Nie umiesz? Naucz się (ponoć lubisz się uczyć nowych rzeczy)

Ten post edytował devnul 16.12.2007, 19:49:53


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
Moli
post
Post #17





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
Bez komentarza.

O co Ci chodzi ? Rozbudowanie tej funkcji na klasy nie dośc że poprawiło by elastycznośc (jeśli klasa była by dobrze napisana oczywiście) to łatwiej mógłby rozbudowywać o nowe funkcjie ją.
Go to the top of the page
+Quote Post
phpion
post
Post #18





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ale chyba autor napisał, że nie zna OOP więc po co drążysz temat?
Go to the top of the page
+Quote Post
devnul
post
Post #19





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


ta, autor wątku wiele pisze tu napisał że PHP zna dobrze (WTF - bez choćby podstaw OOP) a także że się chętnie uczy nowych rzeczy - więc ma okazje poznać OOP przy jakimś rozsądnym rozwoju tego paginatora.


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
b_chmura
post
Post #20





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


Cytat(devnul @ 16.12.2007, 21:55:18 ) *
ta, autor wątku wiele pisze tu napisał że PHP zna dobrze (WTF - bez choćby podstaw OOP) a także że się chętnie uczy nowych rzeczy - więc ma okazje poznać OOP przy jakimś rozsądnym rozwoju tego paginatora.


Przyznam szczerze że często nie raz sie zabierałem za naukę obiektowego programowania jednak przed tym czytałem wiele opinii na ten temat, były bardzo zróżnicowane, jedni mówili że OOP znacznie uelastycznia kod drudzy ze ten sam efekt można uzyskać bez obiektów. W rezultacie sam nie dostrzegam większych różnic.
Często doradzano mi nauki OOP jednak nigdy nie mogłem się do niego do końca przekonać.

Jutro postaram się zrobić powtórkę z rozrywki i w/w skrypt napisać za pomocą OOP

Pozdrawiam
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 19.08.2025 - 19:52