Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Paginacja - mała poprawka
Forum PHP.pl > Forum > Przedszkole
desavil
Witam, napisałem sobie taki skrypt paginacji:
  1. $page_limit = 2;
  2. if($validate -> isNumber($_GET['page_count']) == true){ $page_start = ($_GET['page_count'] - 1) * $page_limit; }else{ $page_start = 0; }
  3.  
  4. if($_GET['page_count'] > 1){ echo '<a href="/news-'.($_GET['page_count']-1).'">WSTECZ<a> '; }else{ echo '<font color="red">WSTECZ</font> '; }
  5.  
  6. for($i = 1; $i <= ceil($sql_history_count_all/$page_limit); $i++){
  7. echo ' - <a href="/news-'.$i.'">'.$i.'</a>';
  8. }
  9.  
  10. if($_GET['page_count'] < $i-1){ echo ' - <a href="/news-'.($_GET['page_count']+1).'">DALEJ</a>'; }else{ echo ' - <font color="red">DALEJ</font>'; }

Wyświetla on 2 rekordy na stronie, a format jego jest taki:
WSTECZ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - DALEJ

Chciałbym go dopracować, ale nie mam pomysłu jak to zrobić, mówiąc dokładniej chciałbym osiągnąć takie coś:
1. Jeżeli podstron będzie od 0 do 5 wyświetlany jest w taki sposób: WSTECZ - 1 - 2 - 3 - 4 - 5 - DALEJ
2. Jeżeli podstron jest więcej niż 5 wyświetlany jest (dla 6 podstron): WSTECZ - 1 - 2 - 3 - 4 ... 6 - DALEJ, dla 8 podstron, np: WSTECZ - 1 - 2 - 3 - 4 ... 8 - DALEJ
3. Jeżeli mamy podstron, np. 30 i wejdziemy na podstronę 15 to mamy taki układ: WSTECZ - 1 ... 14 - 15 - 16 ... 30 - DALEJ
4. Jeżeli jesteśmy na podstronie, np. 30 wyświetli się: WSTECZ - 1 ... 27 - 28 - 29 - 30 - DALEJ

Pozdrawiam.
CuteOne
Zobacz do działu Gotowe rozwiązania - znajdziesz ta bardzo fajny skrypt paginacji.
desavil
Niestety tamten skrypt mi nie odpowiada.
Chciałbym w miarę możliwości dopracować ten.

Ma ktoś jakiś pomysł?
Spawnm
Masz gotowca w kohana 2.x
timon27
Cytat(desavil @ 23.09.2012, 08:47:40 ) *
Niestety tamten skrypt mi nie odpowiada.
Chciałbym w miarę możliwości dopracować ten.

Ma ktoś jakiś pomysł?


Tak - weż ify z tamtego skryptu (http://forum.php.pl/index.php?s=&showt...st&p=951799)
Przecież to jest dokładnie to o co ci chodzi.

Edit:
no dobra masz:
  1. $page_limit = 2;
  2. if($validate -> isNumber($_GET['page_count']) == true){ $page_start = ($_GET['page_count'] - 1) * $page_limit; }else{ $page_start = 0; }
  3.  
  4. if($_GET['page_count'] > 1){ echo '<a href="/news-'.($_GET['page_count']-1).'">WSTECZ<a> '; }else{ echo '<font color="red">WSTECZ</font> '; }
  5.  
  6. $stron=ceil($sql_history_count_all/$page_limit);
  7. $akt=$_GET['page_count'];
  8. $poprzednia=0;
  9. for($i = 1; $i <= $stron; $i++){
  10. if($i == 1 OR $i == $stron OR $i==$akt-2 OR $i==$akt-1 OR $i==$akt OR $i==$akt+1 OR $i==$akt+2) {
  11. if($i!=$poprzednia+1) echo '... ';
  12. if($i=$akt)
  13. echo "<b>$i</b> ";
  14. else
  15. echo '<a href="/news-'.$i.'">'.$i.'</a> ';
  16. $poprzednia=$i;
  17. }
  18. }
  19.  
  20. if($_GET['page_count'] < $i-1){ echo ' - <a href="/news-'.($_GET['page_count']+1).'">DALEJ</a>'; }else{ echo ' - <font color="red">DALEJ</font>'; }

Dodałem trzykropki, usunąłem dzięsiątki
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.