Как узнать количество элементов на странице с этим кодом нумерации страниц? - PullRequest
1 голос
/ 17 мая 2019

Я построил успешный пейджер в PHP с MySQL, который работает очень хорошо. У меня вопрос больше похож на математическую задачу. Я не буду обременять вас всем кодом, чтобы он был коротким и чистым. Я выкладываю только самое необходимое, чтобы вы поняли.

Я пытаюсь показать количество результатов на странице:

    $row_count = total rows from database
    $items_per_page = whatever number inserted here creates the total number of pages.

    Showing results '.$items_per_page*$page.'/'.$row_count.'

Математика выше не имеет никакого смысла. Если у меня есть 72 строки из таблицы и отображается 50 элементов на странице, это дает мне 2 страницы. Первая страница будет содержать 50 элементов, а вторая - 22. Проблема на второй странице, она покажет: Showing results 100/72. На второй странице пользователь должен увидеть Showing results 72/72.

Какая математика / алгоритм, чтобы заставить это работать? Я уверен, что это действительно глупо, но я не могу понять это.

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Вы хотите считать только целые страницы, таким образом:

$displayed_items = ($row_count - $items_per_page*($page - 1)) > $items_per_page ? $items_per_page*$page : $row_count;
echo "Display results " . $displayed_items . "/" . $row_count;

Эффективно:

Подсчитайте, сколько осталось элементов, включая то, что вы отображаете (следовательно, $ page - 1).Pg 1 это будет 72 - 0 = 72. Pg2 это будет 72 - 50 = 22;

Если оставшееся число больше, чем то, что отображается на каждой странице, то у вас просто есть элементы страницы # *на страницу.Для стр. 1, 72> 50, поэтому покажите 50 * 1 = 50.

Если оставшееся число меньше, чем то, что отображается на странице, вы показываете последнюю из строк (общее количество строк),Для pg 2, 22 <50, так что покажите 72 (всего). </p>

Редактировать: потому что вы не хотели бы использовать ваш троичный in-line.Вы также можете разделить его на оператор if / else

if( $row_count - $items_per_page * ($page - 1) > $items_per_page ) {
   echo "Showing results " . $items_per_page * $page . "/" . $row_count;
} else {
   echo "Showing results " . $row_count . "/" . $row_count;
}
0 голосов
/ 17 мая 2019

Он будет отображаться правильно до последней страницы, которая является короткой, поэтому неверной.

Я бы сделал оператор if, а затем уменьшил бы соответственно для последней страницы

Если вы можете поделиться большим кодом, я могу написать код для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...