Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Mała edycja stronicowania (paginacji)
Gray
post
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Witam, znalazłem w internecie kod stronicowania, w oparciu o niego chciał bym się dowiedzieć, jak zrobić aby na pierwszej stronie wyświetlała się inna ilość obiektów niż na pozostałych. Dajmy na to na pierwszej 50 obiektów, na pozostałych stronach 15 obiektów.

Oto kod:
  1. $perPage = 20;
  2. if (is_numeric($_REQUEST['page'])) {
  3. $page = (int) $_REQUEST['page'];
  4. if ($page < 1) {
  5. $page = 1;
  6. }
  7. } else {
  8. $page = 1;
  9. }
  10. $start = ($page - 1) * $perPage;
  11. $query = 'SELECT [fields] FROM [table] ' .
  12. "WHERE [condition] LIMIT $start, $perPage";
  13. $result = mysql_query($query);
  14. while ($record = mysql_fetch_srray($result)) {
  15. // wyswietlanie wpisow
  16. }
  17. $prev = $page - 1;
  18. $next = $page + 1;
  19. $prevLink = $_SERVER['PHP_SELF'] . '?page=' . $prev;
  20. $nextLink = $_SERVER['PHP_SELF'] . '?page=' . $next;
  21. echo "<p align='center'>",
  22. "<a href='$prevLink'>";
  23. "Previous Page</a> | ",
  24. "<a href='$nextLink'>",
  25. "Next Page</a></p>";


Pozdrawiam i z góry dziękuję za pomoc.

Ten post edytował Gray 31.03.2012, 21:40:40
Go to the top of the page
+Quote Post
Bateria
post
Post #2





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Łap:
http://jakub-cieslak.pl/phpmysql-paginacja...wanie/
Tylko dodaj przed tym:
  1. $query = mysql_query("SELECT * FROM str LIMIT $odkad, $wynikow");

To
  1. if($page == 1){
  2. $wynikow = 30; // ilosc wynikow na pierwszej stronie
  3. }


Ten post edytował Bateria 31.03.2012, 21:50:32
Go to the top of the page
+Quote Post
Gray
post
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Hmm wstępnie dzięki, musiał bym przeanalizować ten kod który mi podałeś... jednak liczyłem na porady co do podanego przeze mnie skryptu.
Go to the top of the page
+Quote Post
peter13135
post
Post #4





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


  1. if($page==1)
  2. $perPage = 50;
  3. else
  4. $perPage = 15;


ale... ten skrypt wydaje mi się niepełny, bo nie widzę tutaj czegoś, co by tworzyło linki do strony, czyli
1,2,3,...,n-2,n-1,n
Go to the top of the page
+Quote Post
Gray
post
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


niepotrzebne mi są strony wystarczy "poprzednia - następna"
Go to the top of the page
+Quote Post
Bateria
post
Post #6





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Co do kodu podanego przez Ciebie, to nie ukrywam iż nie chciało mi się go analizować. Przykład który Ci podałem jest napisany przeze mnie, więc mogłem być pewny że zadziała.
Go to the top of the page
+Quote Post
Gray
post
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


@Bateria jeszcze nie analizowałem Twojego kodu dokładnie ale wydaje mi się, że to co zaproponowałeś czyli aby przed Twoim kodem dodać:
  1. if($page == 1){
  2. $wynikow = 30; // ilosc wynikow na pierwszej stronie
  3. }


Będzie robiło to samo co dodanie w podanym przeze mnie kodzie tego:
  1. if($page==1)
  2. $perPage = 50;
  3. else
  4. $perPage = 15;


O ile dobrze wszystko przeanalizowałem, to w obu przypadkach jest źle wyświetlana druga strona, błąd polega mniej więcej na tym, że np. na stronie pierwszej mam ustawione wyświetlanie 6 obiektów 1, 2, 3, 4, 5, 6 i kiedy przechodzę na stronę drugą gdzie mam ustawione wyświetlanie 3 obiektów to skrypt wyświetla obiekty 4, 5, 6 zamiast 7, 8, 9

na moje to skrypt na drugiej stronie myśli, że na pierwszej zostały wyświetlone tylko 3 obiekty bo nie wie, że jest tam ustawione 6

Ten post edytował Gray 1.04.2012, 00:39:38
Go to the top of the page
+Quote Post
Bateria
post
Post #8





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Też nie problem...
  1. if($page == 1){
  2. $wynikow = 30; // ilosc wynikow na pierwszej stronie
  3. } else {
  4. $odkad = $odkad + 15;
  5. }
Go to the top of the page
+Quote Post
Gray
post
Post #9





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


No może i nie problem ale w przypadku który podałeś, to nie będzie błędów na stronach od 3 i dalej? pierwsza pokaże 30, druga od 30 do 45 a trzecia od 60 do 75?
Go to the top of the page
+Quote Post
Bateria
post
Post #10





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


W tym przykładzie który Ci podałem, wszystko działa sprawnie, nawet gdy na pierwszej stronie wyświetlasz inną ilość wyników. Sprawdzałem osobiście. Masz tu poprawioną wersję:
http://jakub-cieslak.pl/phpmysql-paginacja-stronicowanie/

Ten post edytował Bateria 1.04.2012, 19:32:46
Go to the top of the page
+Quote Post
Gray
post
Post #11





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


No tak ale jeśli zrobię $odkad = $odkad + 15; to ten kod będzie stosowany na każdej stronie, czyli na 2, 3, 4 ,5 itd. czyli efekty będą niepożądane... do pierwszych 30 doliczy 15 to na drugiej stronie będą od 30 do 45 ale na trzeciej doliczy kolejne 15 i zamiast od 45 do 60 to będzie od 60 do 75

#edit
ok z pierwszych testów chyba wynika, że się myliłem w tym co napisałem powyżej.

Ten post edytował Gray 2.04.2012, 00:05:47
Go to the top of the page
+Quote Post
Bateria
post
Post #12





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


  1. // jezeli jestes na pierwszej stronie bedzie sie wyswietlac zamiast 15 wynikow 30
  2. if($page == 1){
  3. $wynikow = 30; // ilosc wynikow na pierwszej stronie
  4. } else {
  5. // jezeli nie jestes na pierwszej stronie bedzie wyswiatlac 15 wynikow, tylko ze zaczynac wyswietlanie o 15 pozycji pozniej
  6. $odkad = $odkad + 15;
  7. }

Przecież o to Ci chodziło. Skopiuj kod, i sam się przekonaj że to działa tak jak powinno.
Go to the top of the page
+Quote Post
Gray
post
Post #13





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Działa, dzieki.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 04:51