Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Stronnicowanie i zgrabne linkowanie, ograniczyć linki
stein
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 5.10.2006

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


Witam mam taki skrypt ktory stronnicuje księge gości dziala poprawnie i chcialbym go troche zmodyfikować w zwązku z tym proszę o pomoc, skrypt stronicuje wyswietlane rekordy do 10 po czym tworzy kolejną stronę itd. natomiast na dole tworzy linki do tych kolejnych stron czyli np 1,2,3,4,5,6 i tak bez konca będzie 100 stron to stworzy 100 linkow moje pytanie jak to przerobić tak aby pokazywal tylko 10 linkow i ostatni tak by wyświetlane byly tylko od 1 do 10 lub od 1 do 15 i ostatni oraz link do pierwszego linku, nadmieniam ze w tym skrypcie jest tez link do strony poprzedniej i następnej. Co zmienic w tym skrypcie proszę o pomoc?

  1. <?php
  2. require_once ('../gornik_connect.php');
  3.  
  4. $display = 10;
  5.  
  6. // Wyznacza liczbę stron.
  7. if (isset($_GET['np'])) { // Liczba stron już ustalona.
  8.  
  9. $num_pages = $_GET['np'];
  10.  
  11. } else { // Trzeba ją dopiero określić.
  12.  
  13. // Zlicz rekordy
  14. $query = "SELECT COUNT(*) FROM ksiega ORDER BY data ASC";
  15. $result = mysql_query ($query);
  16. $row = mysql_fetch_array ($result, MYSQL_NUM);
  17. $num_records = $row[0];
  18.  
  19. // Wyznacz liczbę stron.
  20. if ($num_records > $display) { // Więcej niż 1 strona.
  21. $num_pages = ceil ($num_records/$display);
  22. } else {
  23. $num_pages = 1;
  24. }
  25.  
  26. } // Koniec instrukcji warunkowej dla zmiennej np.
  27.  
  28. // Określ punkt początkowy wyników w bazie.
  29. if (isset($_GET['s'])) {
  30. $start = $_GET['s'];
  31. } else {
  32. $start = 0;
  33. }
  34.  
  35. tu pobieram dane z bazy itd. $query = "SELECT * FROM ksiega ORDER BY data DESC LIMIT $start, $display";
  36. a potem
  37.  
  38. if ($num_pages > 1) {
  39.  
  40. echo '<br /><p>';
  41. // Określ bieżącą stronę.
  42. $current_page = ($start/$display) + 1;
  43.  
  44. // Jeśli to nie jest pierwsza strona, utwórz łącze do poprzedniej.
  45. if ($current_page != 1) {
  46. echo '<a href="ksiega.php?s=' . ($start - $display) . '&np=' . $num_pages . '">Poprzednia</a> ';
  47. }
  48.  
  49. // Łącza do pozostałych stron.
  50. for ($i = 1; $i <= $num_pages; $i++) {
  51. if ($i != $current_page) {
  52. echo '<a href="ksiega.php?s=' . (($display * ($i - 1))) . '&np=' . $num_pages . '">' . $i . '</a> ';
  53. } else {
  54. echo $i . ' ';
  55. }
  56. }
  57.  
  58. // Jeśli to nie jest ostatnia strona, utwórz łącze do następnej.
  59. if ($current_page != $num_pages) {
  60. echo '<a href="ksiega.php?s=' . ($start + $display) . '&np=' . $num_pages . '">Następna</a>';
  61. }
  62.  
  63. echo '</p>';
  64.  
  65. } // Koniec sekcji łącz.
  66. ?>


Miało być, żeby wyświetlało linki od 1 do 10 lub od 5 do 15 czy tez od 30 do 40 itd.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Na forum jest kilka takich kodów. Ogólnie można powiedzieć tak, że musisz zrobić zmienną odpowiedzialną za "szerokość", czy też "promień zasięgu".
Całość dotychczasowego kodu ujmujesz w pętli for, która zaczyna się od aktualna-promień i leci do aktualna+promień. Dodatkowo robisz sprawdzenie. Jeśli aktualny krok pętli ($i czy inny) jest mniejszy niż pierwsza strona, dajesz continue (to puste przebiegi, ale musimy dojść do pierwszej strony). Jeśli jest większy niż ostatnia, możesz zakończyć pętlę (bo to będą tylko puste przebiegi, które i tak nic nie zmienią).
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: 26.09.2025 - 15:12