Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odwrotna paginacja
buliyo
post 5.07.2012, 12:49:16
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 9.01.2006

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


Udało mi się napisać z tutorialu paginację ale mam problem z dostosowaniem jej do swoich potrzeb. Obecnie mam najnowsze rzeczy zawsze na pierwszej stronie.. Gdy dojdą następne przenoszą się one na drugą, trzecią i tak dalej. Chciałbym mieć stałe strony w odniesieniu do treści znajdujących się na nich. Czyli pierwsza strona w mojej paginacji będzie stroną na której znajdują się najstarsze wpisy.
Będę wdzięczny za wskazówki jak to zmienić.
/inc.page.php
http://pastebin.com/1Vf6sqkD

index.php
  1. $strony_ile2 = ceil($k_ile2/$ustawienia['strona_ile']);
  2.  
  3. if ($_GET['page'] == "" || $_GET['page'] == 1)
  4. {
  5. $strona = 1;
  6. $wstecz = $strony_ile2;
  7. $dalej = $strona + 1;
  8. if ($strona < $strony_ile2)
  9. {
  10. ?><div style="text-align: right;"><a href="?page=<?php echo $dalej;?>"><img style="border: 0px" src="img/starsze.png" onmouseover="this.src = 'img/starsze_hover.png'" onmouseout = "this.src = 'img/starsze.png'" /></a></div><?php
  11. }
  12. }
  13. else
  14. {
  15. $strona = $_GET['page'];
  16. $wstecz = $strona - 1;
  17. $dalej = $strona + 1;
  18.  
  19. if($strona < $strony_ile2)
  20. {
  21. ?>
  22. <div style="text-align: left; float: left;"><a href="?page=<?php echo $wstecz;?>"><img style="border: 0px" src="img/nowsze.png" onmouseover="this.src = 'img/nowsze_hover.png'" onmouseout = "this.src = 'img/nowsze.png'" /></a></div><div style="text-align: right; float: right;"><a href="?page=<?php echo $dalej;?>"><img style="border: 0px" src="img/starsze.png" onmouseover="this.src = 'img/starsze_hover.png'" onmouseout = "this.src = 'img/starsze.png'" /></a></div><br /><br />
  23. <?php
  24. }
  25. else
  26. {
  27. ?><div style="text-align: left;"><a href="?page=<?php echo $wstecz;?>"><img style="border: 0px" src="img/nowsze.png" onmouseover="this.src = 'img/nowsze_hover.png'" onmouseout = "this.src = 'img/nowsze.png'" /></a></div><?php
  28. }
  29. }
  30.  
  31. $oPager = new Vframe_Pagination($strony_ile2, 1, $strona);
  32. $oPager->PatternPage('<a href="?page=[$]" class="paginator_b">[$]</a>');
  33. $oPager->PatternPageCurrent('<span class="paginator_a">[$]</span>');
  34. $oPager->PatternSeparator('<span style="color: #FEBF01;"> ... </span>');
  35. echo ('<br /><br /><div style="text-align: center;">'.$oPager->Render(true, 3, 2, false).'</div>');
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
b4rt3kk
post 5.07.2012, 12:52:54
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


To nie kwestia paginatora tylko tego co wyświetlasz, jeśli z bazy to dodaj na końcu ORDER BY pole_daty


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
buliyo
post 5.07.2012, 12:58:44
Post #3





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 9.01.2006

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


Tak to jest wyciągane z sql, tylko jeśli zrobię to tak jak mówisz to będę miał dobrze powiązane strony z wpisami czli na pierwszej będą najstarsze ale numerki generować będzie mi cały czas odwrotnie. Czyli wchodząc na www będzie wyświetlało mi najstarsze wpisy na pierwszej stronie. Dodatkowo strony będą rosnąć w kolejności 1 2 3 4.. a powinny być 4 3 2 1. Nie wiem też jak zrobić aby domyślną stroną była ta o największym indeksie - tj 4.
Go to the top of the page
+Quote Post
b4rt3kk
post 5.07.2012, 14:04:32
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


A co ma zawierać ów paginator? Strony ułożone od ostatniej do pierwszej? Czyli 4 3 2 1? I jeszcze przyciski typu poprzednia i kolejna?

Zacząłbym od tego by wczytać dane wg daty rosnąco, a paginator w ten sposób:

  1. class Paginator {
  2.  
  3. public $currentPage;
  4. public $numberOfPages;
  5.  
  6. function __contruct($currentPage, $numberOfPages) {
  7.  
  8. $this -> numberOfPages = $numberOfPages;
  9.  
  10. if (!isset($currentPage) OR $currentPage>$numberOfPages OR $currentPage<1) {
  11. $this -> currentPage = $numberOfPages; // jesli ktos bedzie sie bawil z $_GET to ustawi mu maksymalna strone, tak samo gdy brak strony
  12. } else {
  13. $this -> currentPage = $currentPage; // ustawia aktualna strone
  14. }
  15. }
  16.  
  17. function paginator() {
  18. $paginator = '';
  19. for ($i=$this -> numberOfPages; $i>=1; $i--) {
  20. if ($i != $this -> currentPage) $paginator .= '<a href="link_do_strony">' . $i . '</a>'; else $paginator .= '<b>' . $i . '</b>';
  21. }
  22. return $paginator;
  23. }
  24.  
  25. }
  26.  
  27. // wywolanie
  28.  
  29. $p = new Paginator($currentPage, $numberOfPages);
  30. echo $p -> paginator();


To ulozy strony od konca do poczatku, najprostszy przyklad, musisz to jedynie rozbudowac.

Ten post edytował b4rt3kk 5.07.2012, 14:08:41


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
buliyo
post 5.07.2012, 15:19:24
Post #5





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 9.01.2006

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


Nie wiem niestety jak tą klasę wykorzystać.. miała by być ona zamiast tej mojej oPage?
Chcę osiągnąć dokładnie taki efekt jak piszesz.. numeracja malejąca 22 21 20 19 ... 4 3 2 1, dodatkowo przełacznik następna, poprzednia i początkowa strona jest ostatnia zawsze czyli ta z największym indeksem.
Go to the top of the page
+Quote Post
b4rt3kk
post 5.07.2012, 16:22:46
Post #6





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Klasa jest bardzo prosta, musisz tylko wyświetlić funkcję paginator, sprawdz zresztą sam jak to działa. Na wejściu musisz tylko podać obecną stronę (walidacja wbudowana w klasę) i ile jest stron w sumie.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
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: 18.07.2025 - 15:51