+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>
Демонстрация
Остались вопросы? Спрашивайте!
Понравилась статья? Расскажи другим :)
Опубликовано: | Просмотров: 16953