В самом начале своего пути веб-программиста знаний у меня как и все было еще очень мало, но желания хоть отбавляй. И вот я начал писать свой первый скрипт - гостевую книгу. В то время интернет только начал зарождаться и гостевая книга была популярна. Но после нескольких дней я столкнулся с проблемой, которую в то время не мог решить: как выводить все сообщения по 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); ?> Вот теперь все. Я показал вам все функции: для генерации ссылок, для вывода сообщений, для подключения к базе, остальное в вашим руках. Если вам интересно будет как сделать постраничный вывод на файлах, то пишите мне и я напишу статью, чтобы всем было понятно.
|