|
Web - кодинг: PHP:
PHP: разделение на
страницы
Автор: DDeveloper
Оригинал:
Источник:
Явная нехватка материала на эту тему побудила меня к написанию этой статьи.
Сразу же оговорюсь - метод, показанный здесь, неоригинален, я нашел описание его
использования где-то на просторах Рунета и просто немного доработал. Метод же
касается разделения большого количества данных (новостных лент, списков и т.д.)
на страницы, т.е. создание на вашей веб-странице постраничного вывода
информации.
Здесь я приведу пример, работающий с БД MySQL, но при желании его не трудно
будет перенастроить на использование текстовых файлов, если вы храните данные в
них.
Итак, начнем. У нас имеется некоторое количество записей в таблице базы
данных, условно назовем ее table. Эти данные выводятся на страницу одним
потоком, а должны бы несколькими. Т.е. при достижении на странице количества
записей, например, в 10 штук, скрипт бы автоматически "заворачивал" ленту так,
чтобы следующая часть данных находилась уже на другой странице. И при этом
формировал гиперссылки примерно такого вида - "1 2 3", которые мы часто
видим на современных веб-сайтах. При переходе на 2 страницу желательно, чтобы
ссылка на нее становилась неактивной, зато появлялась гиперссылка не первую. В
общем, и так далее.
Перейдем к самому скрипту.
Допустим, ключи-идентификаторы полей у нас хранятся в поле ID,
которое является ключевым и самовозрастающим. Тогда для получения количества
записей просто считываем количество находящихся в базе ключей:
$query=mysql_query("SELECT id FROM
table"); $num_of_rows=mysql_num_rows($query);
Следующая строка нужна для указания того, что количество полей как раз
соответствует количеству материала (в принципе, можно вполне обойтись и без нее,
но это уж мое хобби - вводить множество нужных и ненужных переменных):
$total_mat_number=$num_of_rows;
Дальше указываем количество материала на одной странице:
$mat_per_page=10;
Рассчитываем, сколько всего у нас получится страниц:
$total_pages=ceil($total_mat_number/$mat_per_page);
Далее, собственно, создаем сам цикл разбиения данных на страницы и создания
ссылок, для этого используем оператор for
for ($i=0; $i<$total_pages;
$i++){ $page_number=$i*$mat_per_page; if ($page_number!=$page) { echo
"a href=file.php?page=$page_number target=_self>".($i+1)."a"; } else
{ echo "($i+1)"; };
Как видно из этого цикла, скрипт постоянно подсчитывает количество уже
опубликованного на странице материала, и по достижении числа, указанного в
$total_pages (у нас это 10), "заворачивает" ленту на другую страницу,
заодно формируя на нее гиперссылку. Что собственно от него и требовалось!
Enjoy!
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|
|
|