+7(983)178-57-68

Новые горизонты успешного бизнеса!

Главная Посчитать и заказатьОставить заявку Статьи Отзывы Контакты

Постраничный вывод (постраничная навигация) на PHP из MySQL

В данной статье мы расскажем

как сделать постраничный вывод из базы данных MySQL

.
В нашем примере будет таблица "allusers", ее структура вот такая
----+-----------+--------------+----------------+
id + user + name + email +
----+-----------+--------------+----------------+
1 + User1 + Андрей + user1@mail.ru +
----+-----------+--------------+----------------+
2 + User2 + Андрей + user2@mail.ru +
----+-----------+--------------+----------------+
3 + User3 + Андрей + user3@mail.ru +
----+-----------+--------------+----------------+
4 + User4 + Андрей + user4@mail.ru +
----+-----------+--------------+----------------+
5 + User5 + Андрей + user5@mail.ru +
----+-----------+--------------+----------------+
6 + User6 + Андрей + user6@mail.ru +
----+-----------+--------------+----------------+
7 + User7 + Андрей + user7@mail.ru +
----+-----------+--------------+----------------+
8 + User8 + Андрей + user8@mail.ru +
----+-----------+--------------+----------------+
9 + User9 + Андрей + user9@mail.ru +
----+-----------+--------------+----------------+
10 + User10 + Андрей + user10@mail.ru +
----+-----------+--------------+----------------+
11 + User11 + Андрей + user11@mail.ru +
----+-----------+--------------+----------------+
Из этой таблицы мы будем выводить по 5 пользователей на странице. При этом мы сделаем удобную навигацию, отображаться будет несколько страниц.


<?php
//имя сервера
$serverMySql="localhost";
// логин
$db_log="root";
// пароль
$db_pass="";
function db_connect($serverMySql,$db_log,$db_pass) //create connection
{
$r=mysql_connect($serverMySql,$db_log,$db_pass);
return $r;
}
// база данных
$database="db_off_2";

//название таблицы в базе
$table="allusers";

// кол-во пользователей на странице
$users_on_page="5";

//подключаемся
db_connect($serverMySql,$db_log,$db_pass);
mysql_set_charset('utf8');
mysql_select_db($database);

// считаем юзеров
$count=mysql_fetch_array(mysql_query("select count(id) from `$table`"));

// считаем страницы
$total=ceil($count[0]/$users_on_page);

// страницы
if(empty($_GET["p"])){$_GET["p"]="1";}
$p=$_GET["p"];

$p=mysql_real_escape_string($p);
if(!ctype_digit($p) or $p>$total):
$p="1";
endif;

// формируем запрос
$first=$p*$users_on_page-$users_on_page;
$result=mysql_query("select * from `$table` limit $first, $users_on_page");
?>
Далее html-код вывода таблицы
<!doctype html>
<html><head>
<title>Постраничный вывод информации из базы данных MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table cellspacing="0" cellpadding="4" border='1'>
<tr>
<th>User</th>
<th>Name</th>
<th>Email</th>
</tr>
Далее вставляем цикл вывода из базы данных
<?php  
while($data=mysql_fetch_array($result)) // цикл вывода
{
print "<tr>";
print "<td>$data[1]</td>";
print "<td>$data[2]</td>";
print "<td>$data[3]</td>";
print "</tr>";
}
?>
Закрываем таблицу
</table>
Выводим страницы если их больше одной
<?php
if($total>1):
#две назад
print "<br><div>";
if(($p-2)>0):
$ptwoleft="<a class='first_page_link' href='mysql.php?p=".($p-2)."'>".($p-2)."</a> ";
else:
$ptwoleft=null;
endif;

#одна назад
if(($p-1)>0):
$poneleft="<a class='first_page_link' href='mysql.php?p=".($p-1)."'>".($p-1)."</a> ";
$ptemp=($p-1);
else:
$poneleft=null;
$ptemp=null;
endif;

#две вперед
if(($p+2)<=$total):
$ptworight=" <a class='first_page_link' href='mysql.php?p=".($p+2)."'>".($p+2)."</a>";
else:
$ptworight=null;
endif;

#одна вперед
if(($p+1)<=$total):
$poneright=" <a class='first_page_link' href='mysql.php?p=".($p+1)."'>".($p+1)."</a>";
$ptemp2=($p+1);
else:
$poneright=null;
$ptemp2=null;
endif;

# в начало
if($p!=1 && $ptemp!=1 && $ptemp!=2):
$prevp="<a href='mysql.php' class='first_page_link' title='В начало'><<</a> ";
else:
$prevp=null;
endif;

#в конец (последняя)
if($p!=$total && $ptemp2!=($total-1) && $ptemp2!=$total):
$nextp=" ... <a href='mysql.php?p=".$total."'".$total."' class='first_page_link'>$total</a>";
else:
$nextp=null;
endif;

print "<br>".$prevp.$ptwoleft.$poneleft.'<span class="num_page_not_link"><b>'.$p.'</b></span>'.$poneright.$ptworight.$nextp;
print "</div>";
endif;
mysql_close();
?>
</body></html>

Демонстрация


Остались вопросы? Спрашивайте!


Понравилась статья? Расскажи другим :)

Опубликовано: | Просмотров: 11924