Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Stronicowanie ...Pilna pomoc potrzebna w błahej sprawie
Forum PHP.pl > Forum > Przedszkole
-MaciekD-
Kod ponizej to chyba najpopularniejszy w internecie skrypt stronicowania.

  1. <?php
  2. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  3.  
  4.  
  5. $SQL = "SELECT SQL_CALC_FOUND_ROWS *
  6. FROM moja_baza
  7. ORDER BY date ASC
  8. LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  9. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając od $_GET['porcja']*ILOSC_NA_STRONIE
  10. $RES = mysql_query($SQL); // wykonujemy zapytanie
  11. while($AFR = mysql_fetch_assoc($RES)){
  12. /*Wyświetlanie wyników, przykładowo:*/
  13. echo 'tytuł: '.$AFR['Title'].'<br />';
  14. }
  15.  
  16. // w inny sposób pobieramy ilosc danych w bazie
  17. $SQL = "SELECT FOUND_ROWS() as Ilosc";
  18. $RES= mysql_query($SQL);
  19. list($iloscWpisow) = mysql_fetch_row($RES);
  20.  
  21. //Teraz wypadało by wyświetlić jakąś nawigację
  22.  
  23. //jeśli nie jesteśmy na pierwszej stronie
  24. if($_GET['porcja']>0){
  25. //wyswietlamy link do poprzedniej strony
  26. echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
  27. }
  28.  
  29. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  30. echo '<a href="?porcja='.($i).'">[ '.($i+1).' ]</a> ';
  31. }
  32. //jeśli nie jesteśmy na ostatniej stronie
  33. if($_GET['porcja']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  34. //wyświetlamy link do nastepnej strony
  35. echo ' <a href="?porcja='.($_GET['porcja']+1).'">następne</a>';
  36. }
  37. ?>


Jego efekt jest mniejwiecej taki:

poprzednie [1][2][3][4][5]6][7][8][9][10][11][12][13][14][15] nastepne.

Pytanie: Co wprowadzic w tym skrypcie zeby wyswietlał cos takiego:

poprzednie [1][2][3]...[9][10][11].....[17][18][19] nastepne. gdzie 10 to strona aktywna
thek
Zastanowić się nad logiką pętli for. Musisz koniecznie się iterować przez wszystkie kroki? wink.gif
-MaciekD-
Nie chodzi o to żeby ktoś napisał ten skrypt tylko podpowiedział jak to zrobić, ile petli albo cos bo szukam na necie, ale żeby mi coś pasowało do tego skryptu to ciezko znaleźć.
thek
Ech... Popatrz JAK wglądać ma to co chcesz...
1,2,3 (...) aktualna-1, aktualna, aktualna+1 (...) n-2,n-1, n
z wariantami gdzie aktualna może być zarówno od 1 do 3 jak i od n-2 do n wink.gif Popatrz jak się zmienia wygląd paginacji w zależności od ilości stron oraz aktualnej, to nawet pętle nie będą Ci potrzebne.
-MaciekD-
Poradziłem sobie takim oto sposobem
  1. $pages = $iloscWpisow/ILOSC;
  2.  
  3. for($i = 1; $i<=floor($pages);$i++)
  4. {
  5.  
  6. if($i <= 3 OR $i >= ($pages-3) OR ($_GET['page']+1)==$i OR ($_GET['page']-1)==$i OR ($_GET['page'])==$i OR $i%10==0 OR $i == $pages)
  7. {
  8. if($i==$_GET['page'])
  9. {
  10. echo '<a href="?page='.($i).'" class="active">| '.($i).'|</a> ';
  11.  
  12. }
  13. else
  14. {
  15. echo '<a href="?page='.($i).'">| '.($i).' |</a> ';
  16. }
  17. }
  18. }
  19.  


Co wyswiela mi |1|2|3|9|10|11|18|19|20| czyli jest duzo blizej niz dalej. Jedynie czego mi brakuje to jak poszczegolne te trójki liczb rozdzielic trzykropkiem ...
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.