Главная »
2015 » Сентябрь » 14 » простой алгоритм разбивки содержания на страницы при помощи PHP
10:27 простой алгоритм разбивки содержания на страницы при помощи PHP |
Проблема с которой часто сталкивается начинающий php-программист - разбивка большого количества содержимого (анекдотов, файлов представленных для скачки, картинок, продуктов в e-магазине, и т.д.) на странички. Сегодня мы разберём по косточкам простой алгоритм для её решения.
Итак, для простоты примера выведем список файлов в директории, по 10 файлов на страничку.
<?php
$source_directory = "zip";
$display = 10;
$offset = (!empty($HTTP_GET_VARS['offset'])) ? $HTTP_GET_VARS['offset'] : 0;
$handle = opendir($source_directory);
while ($file = readdir($handle))
{
if(($file != '.') && ($file != '..')) {
$files[] = $file;
}
}
closedir($handle);
$pages = ceil(count($files)/$display);
if($offset < $pages)
{
echo '<a
href="'.$PHP_SELF.'?offset='.($offset+1).'">следующие '.$display.'</a>';
}
if($offset > 0)
{
echo '<a href="'.$PHP_SELF.'?offset='.($offset-1).'">предыдущие
'.$display.'</a>';
}
echo '<hr>';
for($i = ($offset * $display); $i zip";
$display = 10;
Здесь мы определяем директорию для считки и количество файлов на страничке для того чтобы это было можно легко поменять позже. Переменные этого рода всегда хорошо определять заранее, это делает код гораздо более универсальным и облегчает его использование позднее в других проектах.
$offset = (!empty($HTTP_GET_VARS['offset'])) ? $HTTP_GET_VARS['offset'] : 0;
Здесь мы используем ternary statement для того чтобы определить значение переменной offset (если она пуста, ей присваивается нулевое значение, иначе её значение остаётся тем же что и было). Эта переменная держит номер листа в списке на котором находимся.
$handle = opendir($source_directory);
while ($file = readdir($handle))
{
if(($file != '.') && ($file != '..')) {
$files[] = $file;
}
}
closedir($handle);Открываем директорию для чтения и считываем все файлы в матрицу files для вычисления количества листов и для последующего показа имён файлов.
$pages = ceil(count($files)/$display); Вычисляем количество страниц для показа линков на предыдущие и следующие страницы.
if($offset < $pages)
{
echo '<a
href="'.$PHP_SELF.'?offset='.($offset+1).'">следующие '.$display.'</a>';
}Если мы не на последней странице, нужно показать линк на следующую страницу.
if($offset > 0)
{
echo '<a
href="'.$PHP_SELF.'?offset='.($offset-1).'">предыдущие '.$display.'</a>';
}
Соответственно, если мы не на первой странице, нужно показать линк на предыдущую
страницу.
echo '<hr>';
Для красоты, отделим навигацию от списка горизонтальной линией.
for($i = ($offset * $display); $i
|
Просмотров: 333 |
Добавил: admin
| Рейтинг: 0.0/0 |