воскресенье, 17 ноября 2013 г.

Навигация по страницам для сайта на PHP


Навигация по страницам для сайта на 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{
   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;
}
Тема стиля 2 (красная):


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));
}    








Комментариев нет:

Отправить комментарий

Постоянные читатели

Популярные сообщения