Intereting Posts
Дружественные URL-адреса вместо строк запроса? как читать файлы, сохраненные на сервере, используя php и совершать вызовы на эту php-страницу, используя ajax для отображения списка файлов Как предотвратить появление форм из опорожнения, отправив форму в html? Каков наилучший способ разобрать Paypal NVP в PHP? Apache 2.4 + PHP-FPM и заголовки авторизации сохранение параметров POST после страницы входа в symfony Как выполнить 2 или более SQL-запросов в PHP без объединения таблиц Предложения / Трюки для дросселирования скрипта PHP SHA512 для генерации случайных чисел в PHP Как выполнить javascript на сервере node.js ajax abort не прерывается на сервере, только для клиента Создание PDF с использованием TCPDF и определенного div в качестве содержимого Что это за синтаксис в PHP? Как проверить, изменилось ли содержимое каталога с помощью PHP? Как использовать order_id как номер счета-фактуры и конвертировать любую переменную в качестве gloabal

простой пейджинг с PHP

Я хотел бы реализовать пейджинг в PHP. У меня есть набор результатов из db, пусть это будет массив. Мне нужен пейджинг, который должен отображать 4 записи на страницу, а номера страниц должны быть следующих

"<< 1,2,3 ….. 20 >>"

и когда вы выбираете страницу 2, тогда формат должен быть следующего

"<< 3,4,5 ….. 20 >>"

можете ли вы, ребята, предложить мне некоторые концепции подкачки, чтобы реализовать это?

Solutions Collecting From Web of "простой пейджинг с PHP"

Вы действительно можете использовать предложение LIMIT в SQL для этого.

Вот достойный учебник, чтобы вы начали.

Посмотрите на PEAR :: Pager .

Получение результатов достаточно просто, используя ограничение, указанное выше, на основе номера страницы. Вы можете использовать цикл для распечатки номеров страниц.

Сначала скажите, что номер страницы отправляется как page = 2 в строке запроса.

 $pagenum=(int)$_GET['page']; if($pagenum<1){ $pagenum=1; }//perform a sanity check. You might also query to find the max page number and see that it's not higher than that. 

Затем вы вставляете pagenum в свой SQL-запрос в качестве смещения, после умножения его на количество результатов на страницу за вычетом результатов на страницу.

Практически в каждом случае следует использовать подготовленный оператор для ввода, используя поставляемые параметры в SQL, конечно, однако в этом случае это не является строго необходимым, так как вы уверены, что переменная является int из-за кастинга (часть (int)). Просто нужно было подчеркнуть это.

Скажем, у вас есть 4 элемента на странице. Вы можете использовать два аргумента для LIMIT или LIMIT и OFFSET отдельно. Если вы используете только ограничение, первое число – это смещение, второе – количество результатов.

 $offset=$pagenum*4-4;//this means for page 1, start on 0, page 2 starts on 4, etc. $sql="select * from the_table limit $offset,4"; 

Таким образом, вы получаете данные для заданного номера страницы. Затем печатать номера страниц – это еще одна история. Этот пример основан на том, как вы хотите, чтобы страницы выглядели так, как описано выше.

 for($i=pagenum+1;$i<20;$i++){ if($i<$pagenum+4){ ?> <a href='stuff.php?page=<?php echo $i;?>'><?php echo $i;?></a> <?php } elseif($i==$pagenum+4) { ?> ... <?php } elseif($i==20){ ?> <a href='stuff.php?page=20'>20</a> <?php } ?> 

Я бы рекомендовал использовать стандартизованную библиотеку. Игнасио рекомендовал библиотеку PEAR :: Pager, но я частично отношусь к Zend_Paginator в Zend Framework.

В библиотеку входит множество адаптеров, а на Github – другие, для использования разных источников данных.

Это будет наиболее эффективно, если вы справитесь с этим в Db, а в коде доступа к данным u может иметь функцию, которая принимает такие аргументы, как pageSize, PageNumber, sortOrder. Ваш sql мог бы выглядеть примерно так:

 SELECT * FROM your_table WHERE condition = true ORDER BY some_field LIMIT 100, 10