М Б С

Бесплатная помощь в раскрутке форума и сайта
Текущее время: 28-03, 18:57

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: PHP: разделение на страницы
СообщениеДобавлено: 01-08, 10:57 
Не в сети
Авторитет
Аватара пользователя

Зарегистрирован: 12-09, 19:30
Сообщения: 332
PHP: разделение на страницы

Явная нехватка материала на эту тему побудила меня к написанию этой статьи. Сразу же оговорюсь - метод, показанный здесь, неоригинален, я нашел описание его использования где-то на просторах Рунета и просто немного доработал. Метод же касается разделения большого количества данных (новостных лент, списков и т.д.) на страницы, т.е. создание на вашей веб-странице постраничного вывода информации.
Здесь я приведу пример, работающий с БД 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!

Источник http://web-avangard.net/
При перепечатке статьи ссылка на http://mbs.flybb.ru/ обязательна


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09-03, 09:21 
Не в сети
Новичок форума
Аватара пользователя

Зарегистрирован: 19-01, 10:32
Сообщения: 41
Очень хочется попробовать, а еще б по шагам все это повторить - что скопировал и куда вставил (в какое место на странице) - это для совсем мало разбирающихся :oops:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by Forumenko © 2006–2014
Русская поддержка phpBB