Скрипты для сайтов, на главную страницу Контакты Мобильная версия

Готовые скрипты и сайты под ключ - nevius.ru

Скрипты и сайты на заказ
Статьи
В статьях приводятся наглядные примеры скриптов, разбирается пошагово каждая команда, дается описание так, чтобы вы самостоятельно могли написать скрипт или сделать сайт.
Скрипт разбивки на страницы информации из базы данных MySQL

Здесь все примерно также, как в скрипте разбивки на страницы информации из текстового файла. Сперва определяем общее количество сообщений, указываем сколько нужно выводить на одной странице, считаем число страниц, создаем список страниц и выводим информацию на экран с разбивкой на страницы.

$maxThread = 20;
// указываем сколько сообщений должно выводиться на одной странице

$db = mysql_connect($bdhost,$bdlogin,$bdpass) or die("Подключение к базе данных не состоялось!");
mysql_select_db($bdname,$db) or die("Не удалось выбрать базу данных!");
$result = mysql_query("SELECT * FROM 'table');
// <читаем> таблицу 'table'. Разумеется перед этим подключившись к базе данных, как мы и сделали

$totaltexts=@mysql_num_rows($result);
// подсчитываем общее количество полей в таблице 'table', чтобы определить сколько всего у нас будет сообщений

if(!isset($page)) $page = 1;
// определяем текущую страницу. Если номер страницы еще не высчитывался и не указывался, то соответственно текущий номер страницы 1

if( $totaltexts <= $maxThread ) $totalPages = 1;
elseif( $totaltexts % $maxThread == 0 ) $totalPages = $totaltexts / $maxThread;
else $totalPages = ceil( $totaltexts / $maxThread );
if( $totaltexts == 0 ) $threadStart = 0;
else $threadStart = $maxThread * $page - $maxThread + 1;
if( $page == $totalPages ) $threadEnd = $totaltexts;
else $threadEnd = $maxThread * $page;
$initialMsg = $maxThread * $page - $maxThread;
$pages = (int) (($totaltexts + $maxThread - 1) / $maxThread);
// вновь с помощью математических функций вычисляем общее число страниц $pages

$line = "Страница: |";
for ($k = 1; $k <= $pages; $k++) {
if ($k != $page) {$line .= "<a href=\"index.php?page=$k\"> $k </a>|";}
if ($k == $page) {$line .= " $k |";}
}
// и с помощью цикла формируем список страниц со ссылками и заносим их в переменную $line

$result = mysql_query("SELECT text FROM 'table' LIMIT $initialMsg, $maxThread");
// снова делаем запрос к базе данных, но на этот раз мы уже ограничили количество записей числом $maxThread, которое в нашем примере равно 20. Запись с которой начинается запрос определяется здесь переменной $initialMsg, которая была рассчитана скриптом выше. Вы сами можете определять в каком порядке выводить записи - либо от новых к старым, либо от старых к новым. Для этого используйте команду ORDER BY в запросе к БД.

while ($myrow=mysql_fetch_array($result))
{
$text=$myrow["text"];
echo "$text<br>";
}
// А здесь уже обычное чтение полей базы данных и вывод их на экран.

echo "$line";
// и наконец вывод номеров страниц со ссылками на следующие и предыдущие

В заключение, как уже было обещано, мы поговорим о том, как сделать вывод строки с номерами страниц более презентабельным. Мы ограничим вывод номеров соседних страниц двумя, а для доступа к следующим и предыдущим поставим ссылки <вперед>, <в начало>, <в конец>. То есть информация из 10 страниц при условии, что в данный момент мы на 5-й странице будет выглядеть в нашем выводе так:
Страница: <в начало> <3> <4> 5 <6> <7> <вперед> <в конец>
Пример подобной реализации можно увидеть в скрипте знакомств.

Сам скрипт будет точно такой же как предыдущий, но вместо вот этой части:

$line = "Страница: |";
for ($k = 1; $k <= $pages; $k++) {
if ($k != $page) {$line .= "<a href=\"index.php?page=$k\"> $k </a>|";}
if ($k == $page) {$line .= " $k |";}
}

мы напишем такую:

$line = "Страницы: <a href=\"index.php?page=1\">в начало</a> ";
for ($k = 1; $k <= $pages; $k++) {
if (($k - $page) < 3 and ($k + 3) > $page)
{
if ($k != $page) {$line .= "<a href=\"index.php?page=$k\">$k</a>";}
if ($k == $page) {$line .= "$k";}
}
}
$ppg=$page+1;
if ($ppg <= $pages) {$line .= " <a href=\"index.php?page=$ppg\">Вперед</a>";}
$line .= " <a href=\"index.php?page=$pages\">в конец</a>";

Удачи в программировании!

©Невежин Евгений
http://nevius.ru
06.05.2007

При перепечатке информации ссылка на сайт http://nevius.ru обязательна.