У меня есть массив, который имеет более 10 тыс. Результатов (сгенерированный MySQL-запросом), и мне интересно, что лучше всего подходит для его разбиения на страницы? Извлеките все данные сначала, затем разделите их на страницы или еще один быстрый / лучший способ?
Используйте синтаксис LIMIT
MySQL для получения желаемых результатов из базы данных до того, как он достигнет вашего PHP-кода.
Что-то вроде этого:
$offset = 0; $per_page = 25; $query = "SELECT * FROM `blah` LIMIT $offset, $per_page"; ...
Как и было предложено, вы можете использовать LIMIT
. Чтобы узнать общее количество результатов, вы можете сделать следующее:
SELECT SQL_CALC_FOUND_ROWS * FROM `table` ... LIMIT 0, 20
Затем:
SELECT FOUND_ROWS() AS `total_results`
Чтобы получить максимальный номер страницы вашего пагинатора.
Чтобы отобразить ссылки навигации по страницам для этих многих записей, рассмотрите возможность использования «логарифмической» навигации по страницам. Глянь сюда:
Как выполнять навигацию по страницам для многих, многих страниц? Логарифмическая навигация по страницам
Вероятно, вы захотите выполнить запрос COUNT (), прежде чем потянуть свой контент, чтобы определить, сколько строк у вас есть. Общий алгортим для определения того, сколько страниц вам нужно, тогда
ceil (totalRows / rowsPerPage)