Делаем постраничный вывод на Php + Mysql

В самом начале своего пути веб-программиста знаний у меня как и все было еще очень мало, но желания хоть отбавляй. И вот я начал писать свой первый скрипт - гостевую книгу. В то время интернет только начал зарождаться и гостевая книга была популярна. Но после нескольких дней я столкнулся с проблемой, которую в то время не мог решить: как выводить все сообщения по 10 на странице? С этим было просто, но вот как сделать ссылки на страницы, при переходе на которые показывались бы следующие 10 страниц???

Это было для меня огромной проблемой и для ее решения я оббегал кучу форумов и сайтов. Постраничный вывод очень нужен и в наше время, но статей по нему до сих пор почти нет. Я решил исправить эту несправедливость. На своем примере я покажу вам постраничный вывод сообщений из mysql-базы, т.к. сейчас она очень популярна и имеет множество преимуществ по сравнению с файлами. Если вам будет нужно, то я могу показать вам постраничный вывод сообщений из файла.

Сначала надо пределить с базой, в которой хранятся наши сообщения. Не будем придумывать огромные базы с сотнями таблиц. Возьмем для примера такую базу, в которой только только 1 таблица и в ней 2 поля: номер сообщения и само сообщение. Чуть ниже вы можете посмотреть на структуру таблицы из этой базы.
 

id text
   
1 text1
2 text2
3 text3
4 text4
5 text5

С базой определились, можно начинать скрипт. Для начала подключимся к нашей новоиспеченной базе и вычислим число строк в таблице posts.
<?php

$link = mysql_connect("localhost","user","pass"); //Подключаемся к серверу базы данных
mysql_select_db("base",$link); //Выбираем базу
$posts = mysql_query("select * from posts");
$total_posts = mysql_num_rows($posts); //Считаем число строк в таблице с сообщениями (posts)

Итак, начало положено. Теперь будем писать функцию для отображения ссылок на другие страницы с сообщениями, собственно говоря сам постраничный вывод. Это не слишком сложная функция, но и не самая простая, т.к. меньше она быть не должна, а больше по вашему усмотрению. Мы задаем функции 4 аргумента (в комментарии они описаны). Вы можете добавить несколько примочек в эту функцию на свой вкус я дал вам лишь основу, дальше двигайтесь сами. Можно например выделить ссылку на текущую страничку.

function print_links($total,$page,$number,$links) //1 аргумент - всего сообщений, 2 - номер текущей страницы, 3 - число сообщений на странице, 4 - число отображаемых ссылок
{
$return = null;
$pages = ceil($total/$number); //Вычисляем сколько должно получиться страниц

if ($page+$links <= $pages)
{
$start = $page;
}
else
{
$start = $pages-($links-1);
$finish = $pages;
}

if ($start < 0)
{
$start = 1;
}

for ($i=$start;$i<=$finish;$i++) //Записываем в переменную ссылки
{
$return .= " <a href='?page=$i."'>".$i."</a> ";
}
return $return; }

Итак, функция у нас готова. В ней вы можете указать сколько ссылок будет отображаться и сколько сообщений выводить. Осталось самое легкое: надо вывести сообщения в браузер, с учетом номера страницы, на которой сейчас посетитель.

Для начала добавим небольшую проверку. Если у вас не указан номер страницы, то по умолчанию вам будет отображаться первая страница. МОжно добавить также дополнительные проверки, чтобы исключить работу скрипта при запросах вида: $#$## или фав1324. Это повысит безопасность скрипта, а следовательно и сайта.

if (!isset($page)) { $page = "1"; } //Здесь мы делаем проверку. Если переменная page (номер страницы) не указана, то ей присваивается значение 1
print print_links($total_posts,$page,"10","5"); //Выводим в браузер ссылки
$query = mysql_query("select * from posts limit ".(($page-1)*10).",10 "); //Выбираем нужное число сообщений
while ($row=mysql_fetch_array($guest)) { print "<br>".$row['text']."<br>"; //Выводим сообщения (дизайн делайте сами) }
mysql_close($link);
?>

Вот теперь все. Я показал вам все функции: для генерации ссылок, для вывода сообщений, для подключения к базе, остальное в вашим руках. Если вам интересно будет как сделать постраничный вывод на файлах, то пишите мне и я напишу статью, чтобы всем было понятно.
 

Если что-то непонятно, то заходите ко мне на сайт или пишите мне на email

Автор: Шенин Юрий
e-mail: admin@web-coder.ru
Сайт: http://www.web-coder.ru



Опубликовал admin
19 Сен, Вторник 2006г.



Программирование для чайников.