Информационные технологииStfw.Ru 🔍

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

Php + Mysql шенин юрий
🕛 04.10.2006, 11:39
в самом начале своего пути веб-программиста знаний у меня как и все было еще очень мало, но желания хоть отбавляй. и вот я начал писать свой первый скрипт - гостевую книгу. в то время интернет только начал зарождаться и гостевая книга была популярна. но после нескольких дней я столкнулся с проблемой, которую в то время не мог решить: как выводить все сообщения по 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

PHP   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉