Я собираюсь перефразировать ваш вопрос в моем ответе, а затем ответить на мой вопрос ...
Краткий обзор
То, что у вас есть, является набором результатов,и в этом наборе результатов вы хотели бы иметь возможность разбивать результаты на страницы, чтобы не отображать все элементы в результатах сразу.Вы хотели бы иметь возможность отображать любое количество результатов на странице, но, скорее всего, что-то вроде 5 или 10 результатов.
Ответ
Хорошо, давайте предположим, что у вас есть набор результатов, который загружается при просмотре index.php
.
Однако вы хотите отобразить только определенное количество элементов из этого набора результатов.
Я сейчас создам воображаемый набор результатов.
$results = array(
array( 'id' => 1, 'Apple'),
array( 'id' => 2, 'Orange'),
array( 'id' => 3, 'Banana'),
array( 'id' => 4, 'Pinapple'),
array( 'id' => 5, 'Kiwi'),
array( 'id' => 6, 'Starberries'),
array( 'id' => 7, 'Blackberries'),
array( 'id' => 8, 'Melon'),
array( 'id' => 9, 'Opal'),
array( 'id' => 10, 'Zuchini'),
array( 'id' => 11, 'Peach'),
array( 'id' => 12, 'Pear'),
array( 'id' => 13, 'Plum')
);
Хорошо, теперь это может быть наш воображаемый набор результатов.То, что вы хотели бы сделать, для страницы 1 - получить только первые 5 элементов.
Поэтому, когда кто-то посещает index.php?page=1
или index.php
, они получат только (Apple, Orange, Banana, Pinapple и Kiwi).
Это называется нумерацией страниц .Вы можете разбить результаты на страницы после их получения или разбить их на страницы, используя offsets
и limits
в mySQL.Поскольку вы еще не сказали, что используете mySQL, я сделал предположение, что у вас уже есть все ваши результаты.
Теперь, если у вас есть запрос, который приходит как
GET /index.php?page=1
Тогдавы бы сделали это:
$page = $_GET['page'];
$page ? is_numeric($page) && isset($page) ? $page : 1;
$count = 5;
$offset = $page == 1 ? 0 : (($page * $count) -1 ) - $count;
// Slice now contains your results which you can use to foreach() through
$slice = array_slice($results, $offset,$count);
Результат
Array
(
[0] => Array
(
[id] => 1
[0] => Apple
)
[1] => Array
(
[id] => 2
[0] => Orange
)
[2] => Array
(
[id] => 3
[0] => Banana
)
[3] => Array
(
[id] => 4
[0] => Pinapple
)
[4] => Array
(
[id] => 5
[0] => Kiwi
)
)
В этом примере я не выполнял никакой реальной фильтрации или какой-либо серьезной проверки того, что страница $ _GET имеет правильный формат,но ты должен понять.
Есть также много ресурсов, чтобы сделать это проще для вас.Лично я массивный фанат Zend_Paginator
, который я использую для всех своих нужд нумерации страниц.Смотрите здесь Zend_Paginator
Также другие ресурсы: