Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienna ,Stronnicaowanie doklejenie
Forum PHP.pl > Forum > Przedszkole
kielich
Witam mam mały problem na który nie ma pomysłu mianowicie ,

Zrobiłem sobie paginacje i mam sobie w tablicy liczbe podstron

np cos takiego.

  1. [0] => 1 , [1] => 2 , [2] => 3, [3] => 5, [4] => 6


po przetworzeniu wszystko mam jak chce
czyli 1,2,3,4,5 (linki do podstron )
ale potrzebuje mieć np. tak

1,2,...,5

kiedy bedę na 5 to będę miał np
6,7,...,10

Chodzi mi po prostu jak dokleić te kropki
Pilsener
  1. function tresc_pasek($l_odp,$l_odp_nastronie,$l_odp_napasku,$a) { //funkcja tworząca nawigację
  2. $l_odp_podz = intval($l_odp/$l_odp_nastronie)+1;
  3. $l_odp_podz_mod = $l_odp%$l_odp_nastronie;
  4. if($l_odp_podz_mod>0){++$l_odp_podz;}
  5. if($a>=$l_odp_podz){$a=$l_odp_podz-1;}
  6. if($a>1){$tablica['prev']=$a-1;}else {$tablica['prev']=0;}
  7. if($a<=$l_odp_napasku){$koniec=$l_odp_napasku*2+2;}else{$koniec=$a+$l_odp_napasku+1;}
  8. if($a<=$koniec-$l_odp_napasku){$star=$a-$l_odp_napasku;}
  9. if($a>=$l_odp_podz-$l_odp_napasku){$star=$l_odp_podz-$l_odp_napasku*2-1;}
  10. if($koniec>$l_odp_podz){$koniec=$l_odp_podz;}
  11. if($star<1){$star=1;}
  12. for($i=$star;$i<$koniec;++$i){
  13. if($i<$a){$tablica[]=$i;}
  14. if($i==$a){$tablica['active'] = $i;}
  15. if($i>$a){$tablica[]=$i;}
  16. }
  17. if($a<$l_odp_podz-1){$tablica['next']=$a+1;}else{$tablica['next']=0;}
  18. return $tablica;
  19. }
  20. ]
- użyj takiej funkcji, funkcja zwraca numery stron w postaci tablicy, z zaznaczeniem następnej, poprzedniej i aktywnej, jak to wyświetlisz i połączysz kodem HTML to już Twoja sprawa. Krótki opis parametrów: 1 - liczba rekordów, 2- liczba rekordów na jedną stronę, 3- rozmiar tablicy stron (szerokość paska nawigacyjnego), 4- numer aktualnej strony.

Kiedyś znalazłem tą funkcję na tym forum i trochę ją ulepszyłem.
thek
@Pilsener... Trochę przypomina moją, ale ma bardziej zamotaną strukturę winksmiley.jpg
Najprościej będzie autorowi jeśli zrobi tak, że będzie miał zmienne
  1. $aktualna - obecna strona paginacji;
  2. $elementy - liczba wszystkich elementów;
  3. $na_strone - liczba elementów na stronie;

I całość działań to:
  1. $stron = ceil( $elementy/$na_strone );

1. Jeśli $stron = 1 to odpuść wyświetlanie paginacji sobie
2. Jeśli $stron > 1 to:
a) Sprawdź czy $aktualna jest inna niż pierwsza (może to być 0 lub 1, zależnie jaką przyjąłeś ) i jeśli tak to zrób link do "Pierwsza" i "Poprzednia"
cool.gif W pętli w jakimś zakresie od strony X do Y:
- sprawdzaj czy strona pętli jest większa od 0 i mniejsza od $stron, bo tylko takim możesz utworzyć linki,
- jeśli strona w pętli jest równa $aktualna, to ja jakoś oznacz,
c) Sprawdź czy $aktualna jest inna niż ostatnia ($stron ) i jeśli tak to zrób link do "Następna" i "Ostatnia"
Kluczem jest tu zdefiniować X i Y. U Ciebie X to aktualnie wybrana strona a Y to "szerokość w prawo"
Chyba potrafisz tak napisać pętlę FOR by to zaakceptowała? smile.gif
kielich
thek no ja mam identycznie tak jak napisałeś ale nie wiem jak zrobić te "kropki" zeby nie wyswietlac np 50 podstron i mieć kilka pierwszych i ostatnie np.

1,2,3,4,5,.....47,48,49,50
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.