Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Paginacja - pierwsza strona
Forum PHP.pl > Forum > Przedszkole
tenloginjestzajety
Witam
Proszę o pomoc w zmianie adresu dla strony nr. 1
  1. {
  2. if($page != 1)
  3. $paginator .= '<a href="miasto_robocza/'.$miasto.'/'.($page-1).$searchurl.'">&laquo;&nbsp;</a>';
  4. else
  5. $paginator .= '<span class="disabled">&laquo;&nbsp;</span>';
  6. if ($page>=4)
  7. $paginator .= '<a href="miasto_robocza/'.$miasto.'/1'.$searchurl.'">1</a>';
  8. if($page > 4)
  9. $paginator .= '<span>...</span>';
  10. $a = ($page-2)<=1 ? 1 : (($page+2)>$sum ? $page-3 : $page-2);
  11. $b = $page+2 > $sum ? $sum : $page+2;
  12. for($i=$a; $i<=$b; $i++)
  13. if($page == $i)
  14. $paginator .= '<span class="activesub">'.$page.'</span>';
  15. else
  16. $paginator .= '<a href="miasto_robocza/'.$miasto.'/'.$i.$searchurl.'">'.$i.'</a>';
  17. if($sum-$page > 3)
  18. $paginator .= '<span>...</span>';
  19. if($sum-$page >= 3)
  20. $paginator .= '<a href="miasto_robocza/'.$miasto.'/'.$sum.$searchurl.'">'.$sum.'</a>';
  21. if($sum-$page > 0)
  22. $paginator .= '<a href="miasto_robocza/'.$miasto.'/'.($page+1).$searchurl.'">&nbsp;&raquo;</a>';
  23. else
  24. $paginator .= '<span class="disabled">&nbsp;&raquo;</span>';
  25. }
kpt_lucek
Imo źle do tego podchodzisz, zastanów się co masz "dane" i co chcesz osiągnąć.

Generowanie tego typu paginacji można chyba najprościej zrobić tak:
1. zdefiniuj stronę #1 i stronę #n (n = ostatnia),
2. zdefiniuj liczbę stron (na pewno masz limit per strona, oraz liczbę wpisów),

  1. $limit = 20;
  2. $count = count($someArray);
  3.  
  4. $first = 1;
  5. $current = 'x';// x jest dla przykładu, default powinien być 1, a gdy istnieje powinien reprezentować obecną stronę
  6. $last = ceil($count/$limit);


Mając to co wyżej, możesz bardzo prosto zbudować paginację:
  1.  
  2. if($current !== $first) {
  3. // link do pierwszej strony
  4. } else {
  5. // obecna strona
  6. }
  7.  
  8. if($current !== $last) {
  9. //link do ostatniej strony
  10. } else {
  11. // obecna strona
  12. }


Powyższy kod załatwia Ci prostym porównaniem 2, podstawowe strony (pierwszą i ostatnią). Teraz potrzebujesz stron pośrednich, te też możesz stworzyć na kilka sposobów:
1.
  1. $pageRange = range($first + 1, $last - 1);
  2.  
  3. foreach($pageRange as $page) {
  4. //link do danej strony
  5. // w razie potrzeby sprawdzenie czy obecna strona nie jest aktualną stroną w pętli ($current === $page)
  6. }


2.
  1. for($page = $first + 1; $page < $last; $page ++) {
  2. //link do danej strony
  3. // w razie potrzeby sprawdzenie czy obecna strona nie jest aktualną stroną w pętli ($current === $page)
  4. }



Hint:

Pomyśl o MVC
tenloginjestzajety
Cytat
Pomyśl o MVC


a już się zaczynałem cieszyć, że zaczynam ogarniać podstawy php sad.gif
viking
Cytat(tenloginjestzajety @ 7.10.2016, 23:35:57 ) *
a już się zaczynałem cieszyć, że zaczynam ogarniać podstawy php sad.gif

Programowanie to ciągła nauka. Nawet jak piszesz od 20 lat wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.