Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> inny format stronicowania
mb83
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

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


Witam
mam taki oto kod stronicowania
  1. for($str=1; $str<=$stron; $str++){
  2. if($page != $stron){
  3. echo(' <a href="?page='.$str.'" class="b1">'.$str.'</a>');
  4. }
  5. else{
  6. echo(' <a href="page='.$str.'" class="b2">'.$str.'</a>');}
  7. }

i wyświetla on wszystkie strony:
  1. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]


a chcę by wyświetlał tak

  1. [1] [2] [3] ... [8] [9] [10]


jak zmienić ten kod aby tak wyświetlał?

dzięki za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. Mieszasz logikę z HTMLem
2. Mają się pokazywać 3 pierwsze i 3 ostatnie numery stron? To jak będzie wyglądała nawigacja po stronach środkowych? Moim zdaniem chcesz uzyskać efekt standardowy, czyli stałą szerokość paska nawigacyjnego, gdzie np. dla aktualnej strony 10 będą pokazywały się trzy sąsiednie z każdej strony, coś w rodzaju:
Cytat
<<< poprzednia - 7 8 9 10 11 12 13 - następna >>>


Użyj np. takiej funkcji:
  1. function pasek_nawigacyjny($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. }


Która zwróci gotową tablicę stron, z zaznaczeniem poprzedniej, następnej i bieżącej. Tablicę wystarczy połączyć z HTML i gotowe. Argumenty funkcji to: liczba rekordów, liczba rekordów na jedną stronę, rozmiar paska i numer aktualnej strony.

Tego samego algorytmu używa google w swojej wyszukiwarce (IMG:style_emoticons/default/smile.gif) A przynajmniej taką mam nadzieję (IMG:style_emoticons/default/Lkingsmiley.png)
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 01:02