Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]błędy w ilosci stron paginacji
shreker
post 14.12.2012, 13:57:55
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


mam problem przy generowaniu ilosci stron w paginacji, załóżmy że mamy 39 elementów i ustawiamy 20 elementów na stronie - wygenerowane zostaną 2 podstrony (prawidłowo), ale przy 40 elementach już są generowane 3 podstrony (1 pusta), gdzie jest błąd ?
  1. // laczna ilosc, ilosc w rzedzie, ilosc na stronie, dlugosc podstron w paginacji, GET, adres strony
  2. function get_pagenumbers($entries, $rzad, $config_rows, $config_maxshow, $config_page, $adres)
  3. {
  4. $prev = '« cofnij';
  5. $next = 'dalej »';
  6. $config_totalPages = ceil(($entries) / ($rzad * $config_rows));
  7. $start = 0;
  8. $end = $config_totalPages - 1;
  9. if($config_maxshow < $config_page || (($rzad * $config_rows * $config_maxshow) < $entries))
  10. {
  11. if($config_page >= ($config_maxshow + 1) && $config_page < $end - $config_maxshow)
  12. {
  13. $start = $config_page - $config_maxshow;
  14. }
  15. else if($end < $config_page + $config_maxshow + 1 && $config_totalPages-1 >= $config_maxshow * 2+1)
  16. {
  17. $start = $config_totalPages - 1 - $config_maxshow * 2;
  18. }
  19. else
  20. {
  21. $start = 0;
  22. }
  23. if($config_page + $config_maxshow + 1 > $config_totalPages-1)
  24. {
  25. $end = $entries / ($rzad * $config_rows);
  26. }
  27. else if($start == 0 && $end > $config_maxshow * 2)
  28. {
  29. $end = $config_maxshow * 2;
  30. }
  31. else if($start == 0 && $config_totalPages <= $config_maxshow * 2)
  32. {
  33. $end = $config_totalPages - 1;
  34. }
  35. else
  36. {
  37. $end = ($config_page + $config_maxshow);
  38. }
  39. }
  40. if ($config_totalPages <= 1)
  41. {
  42. echo '';
  43. }
  44. else
  45. {
  46. echo '<p align="center"><div class="pagination">';
  47. if(($config_page-1) >= 0)
  48. {
  49. echo '<span class=""><a href="'.$adres.'page='.($config_page-1).'">'.$prev.'</a></span>';
  50. }
  51. else
  52. {
  53. echo '<span class="disabled">'.$prev.'</span>';
  54. }
  55. if($start > 0)
  56. {
  57. echo ' ... ';
  58. }
  59. else
  60. {
  61. echo ' . ';
  62. }
  63. for($i = $start; $i <= $end; $i++)
  64. {
  65. if($config_page == $i)
  66. {
  67. echo '<span class="current">'.($i+1).'</span>';
  68. }
  69. else
  70. {
  71. echo '<span class=""><a href="'.$adres.'page='.$i.'">'.($i+1).'</a></span>';
  72. }
  73. }
  74. if(ceil($end) < $config_totalPages - 1)
  75. {
  76. echo ' ... ';
  77. }
  78. else
  79. {
  80. echo ' . ';
  81. }
  82. if(($config_page + 1) <= $config_totalPages - 1)
  83. {
  84. echo '<span class=""><a href="'.$adres.'page='.($config_page+1).'">'.$next.'</a></span>';
  85. }
  86. else
  87. {
  88. echo '<span class="disabled">'.$next.'</span>';
  89. }
  90. echo '</div></p>';
  91. }
  92. }
Go to the top of the page
+Quote Post
nospor
post 14.12.2012, 14:28:42
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale sieczka.... kupa zmiennych, nie wiadomo co do czego, pewnie sam się nie orientujesz co jaka zmienna robi...

Na dobrą sprawę o to:
$config_totalPages = ceil(($entries) / ($rzad * $config_rows));
powinno odpowiadać za ilość stron, czyli powinno być:
$config_totalPages = ceil(40/20); //2
Czy tak u ciebie jest?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shreker
post 14.12.2012, 14:34:42
Post #3





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


dokładnie nospor - to jest dokładnie w 6 linijce kodu ?! dokładnie "gubi się przy 160", dla 140 elementów podaje właściwą ilość, a przy 160 elementach już podaje jedną stronę więcej.

Ten post edytował shreker 14.12.2012, 14:35:26
Go to the top of the page
+Quote Post
nospor
post 14.12.2012, 14:40:41
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sprawdź lepiej co zawierają zmienne.... bo php w tak banalnym liczeniu się nie gubi
  1. $config_totalPages = ceil(($entries) / ($rzad * $config_rows));
  2. var_dump($entries);
  3. var_dump($rzad);
  4. var_dump($config_rows);
  5. var_dump($config_totalPages);

i sprawa będzie jasna.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shreker
post 14.12.2012, 14:50:25
Post #5





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


dokładnie w kolejności dla 380 elementów:

int(380)
int(4)
float(5)
float(19)

czyli teoretycznie poprawnie, ale stron jest nie 19 ale 20 (20 oczywiści pusta), tak jak wcześnie napisałem przy 140 elementach jest ok, ale przy 160 dodaje już dodatkową stronę.
Go to the top of the page
+Quote Post
nospor
post 14.12.2012, 14:56:51
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czyli błąd masz dalej w tej masie IFów.... musisz sobie teraz echować w każdej linii stan zmiennych aż znajdziesz błąd. Robota raptem na 5 minut.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shreker
post 14.12.2012, 15:02:48
Post #7





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


:-) robota na 5 minut, a piszemy od godziny i jesteśmy w miejscu. skoro wiedziałbym gdzie może być błąd to bym nie pisał, wcześniej już szukałem i dopiero teraz napisałem na forum.
Go to the top of the page
+Quote Post
nospor
post 14.12.2012, 21:15:54
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kurcze.... robisz var_dump po każdym z IFów i widzisz co ci szwankuje. Naprawdę to jest robota na 5 minut. Przecież w którymś miejscu zmienna strona przyjmuje złą liczbę i znalezienie tego miejsca to naprawdę zadna filozofia metodą var_dump....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 00:52