Навигация по страницам для сайта на PHP
Функция постраничной навигации:<?phpФайл вывода постраничной навигации:
function pagination($query, $per_page = 10,$page = 1, $url = '?'){
$query = "SELECT COUNT(*) as `num` FROM {$query}";
$row = mysql_fetch_array(mysql_query($query));
$total = $row['num'];
$adjacents = "2";
$page = ($page == 0 ? 1 : $page);
$start = ($page - 1) * $per_page; $prev = $page - 1; $next = $page + 1;
$lastpage = ceil($total/$per_page);
$lpm1 = $lastpage - 1;
$pagination = "";
if($lastpage > 1)
{ $pagination .= "<ul class='pagination'>";
$pagination .= "<li class='details'>Страница $page из $lastpage</li>";
if ($lastpage < 7 + ($adjacents * 2))
{ for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>"; }
}
elseif($lastpage > 5 + ($adjacents * 2))
{
if($page < 1 + ($adjacents * 2)) {
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>"; }
$pagination.= "<li class='dot'>...</li>";
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>"; }
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
$pagination.= "<li class='dot'>...</li>";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>"; }
$pagination.= "<li class='dot'>..</li>";
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>"; }
else
{
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
$pagination.= "<li class='dot'>..</li>";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>"; }
}
}
if ($page < $counter - 1){
$pagination.= "<li><a href='{$url}page=$next'>Следующая</a></li>";
$pagination.= "<li><a href='{$url}page=$lastpage'>Последняя</a></li>";
}else{
$pagination.= "<li><a class='current'>Следующая</a></li>";
$pagination.= "<li><a class='current'>Последняя</a></li>";
}
$pagination.= "</ul>\n"; }
return $pagination;
}
?>
<?php
$db = @mysql_connect('localhost', 'Имя пользователя', 'Пароль') or die(mysql_error());
@mysql_select_db('Название БД', $db) or die(mysql_error());
include_once ('function.php');
$page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
$limit = 2;
$startpoint = ($page * $limit) - $limit;
// таблица для выборки
$statement = "`records` where `active` = 1";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Навигация по страницам</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<link href="css/pagination.css" rel="stylesheet" type="text/css" />
<link href="css/grey.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.records {
width: 615px;
margin: 5px;
padding:2px 5px;
border:1px solid #B6B6B6;
}
.record {
color: #474747;
margin: 5px 0;
padding: 3px 5px;
background:#E6E6E6;
border: 1px solid #B6B6B6;
cursor: pointer;
letter-spacing: 2px;
}
.record:hover {
background:#D3D2D2;
}
.round {
-moz-border-radius:8px;
-khtml-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius:8px;
}
p.createdBy{
padding:5px;
width: 510px;
font-size:15px;
text-align:center;
}
p.createdBy a {color: #666666;text-decoration: none;}
</style>
</head>
<body>
<div class="records round">
<?php
//Показываем записи
$query = mysql_query("SELECT * FROM {$statement} LIMIT {$startpoint} , {$limit}");
while ($row = mysql_fetch_assoc($query)) {
?>
<div class="record round"><?php echo "{$row['id']}#{$row['name']}";?></div>
<?php
}
?>
</div>
<?php
echo pagination($statement,$limit,$page);
?>
</body>
</html>
База данных для постраничной навигации:
CREATE TABLE IF NOT EXISTS `records` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL,
`active` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=27;
Стили для навигации.
Основной стиль:
ul.pagination{
margin:0px;
padding:0px;
height:100%;
overflow:hidden;
font:12px 'Tahoma';
list-style-type:none; }
ul.pagination li.details{
padding:7px 10px 7px 10px;
font-size:14px;
}
ul.pagination li.dot{padding: 3px 0;}
ul.pagination li{
float:left;
margin:0px;
padding:0px;
margin-left:5px;
}
ul.pagination li:first-child{
margin-left:0px;
}
ul.pagination li a{
color:black;
display:block;
text-decoration:none;
padding:7px 10px 7px 10px;
}
ul.pagination li a img{
border:none;
}
ul.pagination li.details{Тема стиля 2 (красная):
color:#888888;
}
ul.pagination li a
{
color:#FFFFFF;
border-radius:3px; -moz-border-radius:3px;
-webkit-border-radius:3px;
}
ul.pagination li a
{
color:#474747;
border:solid 1px #B6B6B6;
padding:6px 9px 6px 9px;
background:#E6E6E6;
background:-moz-linear-gradient(top,#FFFFFF 1px,#F3F3F3 1px,#E6E6E6);
background:-webkit-gradient(linear,0 0,0 100%,color-stop(0.02,#FFFFFF),color-stop(0.02,#F3F3F3),color-stop(1,#E6E6E6));
}
ul.pagination li a:hover,
ul.pagination li a.current
{
background:#FFFFFF;
}
ul.pagination li.details{
color:#AD2D2D;
}
ul.pagination li a
{
border:solid 1px;
border-radius:3px; -moz-border-radius:3px;
-webkit-border-radius:3px;
padding:6px 9px 6px 9px;
}
ul.pagination li
{
padding-bottom:1px;
}
ul.pagination li a:hover,
ul.pagination li a.current
{ color:#FFFFFF;
box-shadow:0px 1px #EDEDED;
-moz-box-shadow:0px 1px #EDEDED;
-webkit-box-shadow:0px 1px #EDEDED;
}
ul.pagination li a
{
color:#E92F2F;
border-color:#FFA5A5;
background:#FFF8F8;
} ul.pagination li a:hover,
ul.pagination li a.current
{
text-shadow:0px 1px #B72E2E;
border-color:#AD2D2D;
background:#E43838;
background:-moz-linear-gradient(top,#FF9B9B 1px,#FE5555 1px,#E43838);
background:-webkit-gradient(linear,0 0,0 100%,color-stop(0.02,#FF9B9B),color-stop(0.02,#FE5555),color-stop(1,#E43838));
}
Комментариев нет:
Отправить комментарий