Задать вопрос
DeusModus
@DeusModus

Алгоритм подсчёта количества страниц(может вы предложите лучше)

Копался в одной системе и немного ошалел от количества кода, которое там занимается подсчётом количества страниц(что-то вроде пагинации). Тонны переменных, проверок.
Подумал, что же тут такого сложного и написал свою реализацию:
  1. <?php
  2. /**
  3. * Описание алгоритма:
  4. * Алгоритм печатает количество страниц, основываясь на трех константах:
  5. * 1. Количество элементов(всего)
  6. * 2. Желаемое количество элементов на страницу
  7. * 3. Максимальное количество дополнений(ситуация, когда на последней странице 1-2 элемента)
  8. */
  9. define('RESULTS_COUNT', 12349);
  10. define('RESULTS_PER_PAGE', 17);
  11. define('MAX_ADDITIONS', 7);
  12.  
  13. $results_per_page = RESULTS_PER_PAGE>0?RESULTS_PER_PAGE:1; // дополнительная проверка на division by zero
  14.  
  15. if(RESULTS_COUNT<$results_per_page || RESULTS_COUNT==$results_per_page){
  16.   exit('1 page for '.RESULTS_COUNT.' results.');
  17. }
  18.  
  19. $exact_pages_count = RESULTS_COUNT / $results_per_page;
  20. if (is_int($exact_pages_count)) {
  21.   exit($exact_pages_count.' pages for '.RESULTS_COUNT.' results.');
  22. }
  23. else {
  24.   $rough_estimate_pages = intval($exact_pages_count);
  25.   $number_of_surplus=RESULTS_COUNT-($results_per_page*$rough_estimate_pages);
  26.   $pages_of_surplus=$number_of_surplus<=MAX_ADDITIONS?$rough_estimate_pages:$rough_estimate_pages++;
  27.   exit($rough_estimate_pages.' pages for '.RESULTS_COUNT.' results.');
  28. }
  29. ?>
* This source code was highlighted with Source Code Highlighter.


Возможно, у вас есть лучшее решение, решающее такую же задачу? Если да, то было бы интересно взглянуть.
  • Вопрос задан
  • 4254 просмотра
Подписаться 4 Оценить Комментировать
Ответ пользователя Cheese К ответам на вопрос (6)
Cheese
@Cheese
что-то непонятно, вам надо посчитать сколько страниц займёт полученное количество результатов при заданном количестве элементов на страницу?
Ответ написан