Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
matiit
post
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


  1. if ($stron >=7)
  2. {
  3. for ($str=1;$str<=3;$str++)
  4. {
  5. echo(' <a href="?page='.$str.'" class="b1">'.$str.'</a>');
  6. }
  7. echo '...';
  8. for($str=$stron-3;$str<=stron;$str++)
  9. {
  10. if($page != $stron){
  11. echo(' <a href="?page='.$str.'" class="b1">'.$str.'</a>');
  12. }
  13. else{
  14. echo(' <a href="page='.$str.'" class="b2">'.$str.'</a>');}
  15. }
  16. }
  17. }
  18. else{
  19. for($str=1; $str<=$stron; $str++){
  20. if($page != $stron){
  21. echo(' <a href="?page='.$str.'" class="b1">'.$str.'</a>');
  22. }
  23. else{
  24. echo(' <a href="page='.$str.'" class="b2">'.$str.'</a>');}
  25. }
  26. }


Tylko mogą być błędy składniowe, z '{' itd bo niewygodnie się pisze kod w okienku odpowiedzi smile.gif
Go to the top of the page
+Quote Post
Pilsener
post
Post #3





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 smile.gif A przynajmniej taką mam nadzieję Lkingsmiley.png
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 Aktualny czas: 21.08.2025 - 19:14