Говорят, что создание сайта - очень длительный и трудоемкий процесс. Мы скажем - НЕТ! Ведь с новыми технологиями, такими как HTML5, CSS3, PHP и MySql можно быстро и легко научиться создавать сайты любой сложности.
Два сумасшедших веб-мастера покажут где что лежит и как этим пользоваться.
Авторизация
Новый
Забыл
Пожалуйста, заполните поля выше. Это нужно сделать обязательно, иначе ничего не получится.
PHP Статейки /

Постраничная навигация на PHP

  • Четверг, 28 июля 2012, 23:27 |
  • Автор: fiamma |
  • Просмотров: 4007 |
  • Комментарии: 2 |
  • В закладки:
Постраничная навигация на PHPУ меня было несколько скриптов постраничной навигации, которые я использовал на протяжении нескольких лет в своих разработках. Недавно я выделил один скрипт, который и был положен в шкатулку разработчика, а в данных момент предоставлен пользователям Takein.ru на обозрение.

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

По теории прошлись (не безупречно, но думаю сойдет). Теперь давайте поговорим о коде, ну и, конечно упомянем спонсора этого поста компанию «Спинкастинг», которая в своем интернет-магазине предлагает всем программерам выбрать себе рюкзаки туристические по вкусу и цене, ну ладно, поехали дальше...

Прежде всего необходимо создать файл, в котором подключиться к базе данных. Это я описывать не буду, думаю вы и сами справитесь.

Чуть ниже описаны переменные, которые необходимо отредактировать при работе со скриптом:
$tableName для указания названия таблицы, из которой мы хотим получать данные. В моем случае это “countries_list”.
$targetpage для указания страницы, которой передаются параметры.
$limit для указания кол-ва выводимых постов на страницу

<?php
    include('connect.php');    

    $tableName="countries_list";
    $targetpage = "index.php";
    $limit = 10;

    $query = "SELECT COUNT(*) as num FROM $tableName";
    $total_pages = @mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages[num];

    $stages = 3;
    $page = isset($_GET['page'])?mysql_escape_string($_GET['page']):'1';
    if($page){
        $start = ($page - 1) * $limit;
    }else{
        $start = 0;
        }    

    // Get page data
    $query1 = "SELECT * FROM $tableName LIMIT $start, $limit";
    $result = mysql_query($query1);

    // Initial page num setup
    if ($page == 0){$page = 1;}
    $prev = $page - 1;
    $next = $page + 1;
    $lastpage = ceil($total_pages/$limit);
    $LastPagem1 = $lastpage - 1;                    

    $paginate = '';
    if($lastpage > 1)
    {    

        $paginate .= "<div class='paginate'>";
        // Previous
        if ($page > 1){
            $paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
        }else{
            $paginate.= "<span class='disabled'>previous</span>";    }

        // Pages
        if ($lastpage < 7 + ($stages * 2))    // Not enough pages to breaking it up
        {
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {
                if ($counter == $page){
                    $paginate.= "<span class='current'>$counter</span>";
                }else{
                    $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
            }
        }
        elseif($lastpage > 5 + ($stages * 2))    // Enough pages to hide a few?
        {
            // Beginning only hide later pages
            if($page < 1 + ($stages * 2))
            {
                for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
                {
                    if ($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }else{
                        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
                }
                $paginate.= "...";
                $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
            }
            // Middle hide some front and some back
            elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
            {
                $paginate.= "<a href='$targetpage?page=1'>1</a>";
                $paginate.= "<a href='$targetpage?page=2'>2</a>";
                $paginate.= "...";
                for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
                {
                    if ($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }else{
                        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
                }
                $paginate.= "...";
                $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
            }
            // End only hide early pages
            else
            {
                $paginate.= "<a href='$targetpage?page=1'>1</a>";
                $paginate.= "<a href='$targetpage?page=2'>2</a>";
                $paginate.= "...";
                for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }else{
                        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
                }
            }
        }

                // Next
        if ($page < $counter - 1){
            $paginate.= "<a href='$targetpage?page=$next'>next</a>";
        }else{
            $paginate.= "<span class='disabled'>next</span>";
            }

        $paginate.= "</div>";        

}
echo $total_pages.' Results';
// pagination
echo $paginate;
?>

<ul>

<?php

        while($row = mysql_fetch_array($result))
        {

        echo '<li>'.$row['country'].'</li>';

        }

    ?>
</ul>

Добавим немного стилей к нашей постраничной навигации:
.paginate {
    font-family:Arial, Helvetica, sans-serif;
    width:100%;
    clear:both;
    height:25px;
    display:block;
    padding: 3px 0;
    padding-top: 10px;
    margin: 3px 0;
}

.paginate a {
    display: inline-block;
    padding:2px 5px 2px 5px;
    margin:2px;
    border:1px solid #999;
    text-decoration:none;
    color: #666;
}
.paginate a:hover, .paginate a:active {
    border: 1px solid #999;
    color: #000;
}
.paginate span.current {
    margin: 2px;
    padding: 2px 5px 2px 5px;
    border: 1px solid #999;
    font-weight: bold;
    background-color: #999;
    color: #FFF;
}
.paginate span.disabled {
    padding:2px 5px 2px 5px;
    margin:2px;
    border:1px solid #eee;
    color:#DDD;
}

.paginate li{
        padding:4px;
        margin-bottom:3px;
        background-color:#FCC;
        list-style:none;
}

.paginate ul{
    margin:6px;
    padding:0px;
}

А еще мы написали про "Авторизацию с помощью Google"
Добавить комментарий