Скрыть рекламу
КаШАГ » Как я обучался в академии ШАГ » PHP: постраничная навигация

Опрос

Откуда Вы узнали о КаШаГ?

Рекомендовали друзья
Прочитал в прессе
Увидел по TV
Нашел в INTERNET
Увидел рекламму

Кто на сайте

Сейчас на сайте: 2
Гостей: 1
Пользователи: 
- отсутствуют
Роботы: 


 Последние посетители: 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Календарь публикаций

«    Ноябрь 2013    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 

Наши партнеры

 
Программа Сервисный Центр
Программа для учета аппаратов в Сервисном Центре
Купить Samsung UE-40D6510 в Донецке,купить Samsung UE-40D6510 в Донецке онлайн.
Купить Samsung UE-40D6510 в Донецке
 

Статистика

Новости партнеров

Texas Instruments выпускает отладочный набор ZigBee Light Link

Завершенное аппаратно-программное решение позволит добавить в светодиодные системы освещения функции удаленного управления и возможность подключения к облачным ...

TDK объявляет о выпуске промышленных источников питания EVA2400 мощностью 2.4 кВт высотой 2U

Модули в удобном корпусе для интеграции в системы OEMКорпорация TDK объявляет о выходе серии промышленных источников питания TDK-Lambda EVA2400 мощностью 2.4 кВт ...

Vishay представляет новую приемную катушку для беспроводных зарядных устройств с напряжением 7 В

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

Diodes представила мощный аудио усилитель в компактном корпусе

Diodes Incorporated представила мощный аудио моно усилитель класса D в компактном корпусе для поверхностного монтажа SOP16 с вскрытым теплоотводящим основанием. ...

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

 Как я обучался в академии ШАГ
 9-09-2010, 21:00  Автор: muflon Просмотров: 2738 Комментарии: (0)

PHP: постраничная навигация
Очень удобно было бы использовать функцию, которая бы выдавала : ссылки на следующие и предыдущие страницы с учетом текущей открытой. Входными параметрами этой функции были бы кол-во строк на страницу и с какой строки начинать считывать данные. Но в этом примере такой необходимости нет, поэтому для наглядности - мы рассмотрим вот такой скрипт:


<?php
###########################################################################
#               постраничная    навигация , инициализация
###########################################################################    
$config['news_number'] = 10; // Количество строк таблицы на страницу
$zap = $db->query( "SELECT id_p FROM " . PREFIX . "_k_prognoz p  // делаем запрос на общее количество новостей
inner join " . PREFIX . "_users u
on  p.us_id=u.user_id
inner join " . PREFIX . "_k_allkonkurs ak
on  p.id_match=ak.id_k
inner join " . PREFIX . "_k_names nk
on  ak.id_kon=nk.id ".$where."  ");
$count_all = $db->num_rows($zap);

$prid=($_GET['prid'])? "&prid=".$_GET['prid'] : "";  // это переменные которые должны остаться в адресной строке при перелистывании
$prdate=($_GET['prdate'])? "&prdate=".$_GET['prdate'] : "";
$teams=($_GET['teams'])? "&teams=".urlencode($_GET['teams']) : "";
$user=($_GET['user'])? "&user=".$_GET['user'] : "";
$hvost=$prid.$prdate.$teams.$user;
$url_page=$PHP_SELF."?mod=konkurs&action=usprognoz".$hvost; // кусок адреса с переменными до номера страницы

$_GET['page'] = ($_GET['page'])? $_GET['page'] : 1; // если только зашли на страницу - показывать 1
$limit=($_GET['page']-1)*$config['news_number']; //откуда будем начинать вывод новостей
$execut=$config['news_number']; // по сколько новостей выводить
$enpages_count = @ceil( $count_all / $config['news_number'] );
$cstart = $limit;

if( $enpages_count>1) {


//----------------------------------
// Previous link
//----------------------------------

if( isset( $cstart ) and $cstart != "" and $cstart > 1 ) {
        $prev = $cstart / $config['news_number'];
        $prev_page = $url_page . "&page=" . $prev;
        $prev_link="<a href="" . $prev_page . "">Назад</a>";
} else  $prev_link="<span>Назад</span>";

//----------------------------------
// Pages
//----------------------------------
if( $config['news_number'] ) {
    if( $count_all > $config['news_number'] ) {
       
        $pages = "";
        $cstart = ($cstart / $config['news_number']) + 1;
        if( $enpages_count <= 10 ) {
            for($j = 1; $j <= $enpages_count; $j ++) {
                if( $j != $cstart ) {
                    $pages .= "<a href="" . $url_page . "&page=" . $j . "">$j</a> ";
                } else {
                    $pages .= "<span>$j</span> ";
                }
            }
        } else {
            $start = 1;
            $end = 10;
            $nav_prefix = "<span class="nav_ext"> ... </span> ";
            if( $cstart > 0 ) {
                if( $cstart > 6 ) {
                    $start = $cstart - 4;
                    $end = $start + 8;
                    if( $end >= $enpages_count ) {
                        $start = $enpages_count - 9;
                        $end = $enpages_count - 1;
                        $nav_prefix = "";
                    } else
                        $nav_prefix = "<span class="nav_ext"> ... </span> ";
                }
            }
            if( $start >= 2 ) {
                $pages .= "<a href="" . $url_page . "&page=1">1</a> <span class="nav_ext"> ... </span> ";
            }
            for($j = $start; $j <= $end; $j ++) {
                if( $j != $cstart ) {
                    $pages .= "<a href="" . $url_page . "&page=" . $j . "">$j</a> ";
                } else {
                    $pages .= "<span>$j</span> ";
                }
            }
            if( $cstart != $enpages_count ) {
            $pages .= $nav_prefix . "<a href="" . $url_page . "&page={$enpages_count}">{$enpages_count}</a>";
            } else
                $pages .= "<span>{$enpages_count}</span> ";
        }
    }
}

//----------------------------------
// Next link
//----------------------------------
if( $config['news_number'] and $config['news_number'] < $count_all and $cstart != $enpages_count ) {
    $next_page = $cstart  + 1;
        $next = $url_page . '&page=' . $next_page;
        $next_link="<a href="" . $next . "">Далее</a>";

} else $next_link="<span>Далее</span>";

}
// вывод постраничной навигации
$navigac= <<<HTML
<div class="Nnavigation" align="center" style="margin:20px 1% 20px 0;">{$prev_link} {$pages} {$next_link}</div>
HTML;
###########################################################################
#
###########################################################################  

$zapros = $db->query( "SELECT * FROM " . PREFIX . "_k_prognoz p  // основной запрос учитывающий limit  
inner join " . PREFIX . "_users u
on  p.us_id=u.user_id
inner join " . PREFIX . "_k_allkonkurs ak
on  p.id_match=ak.id_k
inner join " . PREFIX . "_k_names nk
on  ak.id_kon=nk.id ".$where."
ORDER BY p.date_p DESC LIMIT {$limit}, {$execut} " );


// стили для кнопок навигации



echo <<<HTML
<style>
.Nnavigation {
    color: #555555;
    border: 0px;
}

.Nnavigation a:link,
.Nnavigation a:visited,
.Nnavigation a:active {
    text-decoration: none;
    color: #555555;
    background-color: #ededed;
    border: 1px solid #e1e1e3;
    padding: 3px 6px;
    font-size: 11px
}

.Nnavigation a:hover {
    background-color: #5078d5;
    color: #ffffff;
    border-color: #e1e1e3;
}

.Nnavigation span {
    text-decoration: none;
    background-color: #ffffff;
    padding: 3px 6px;
    border: 1px solid #e1e1e3;
    color: #555555;
    font-size: 11px;
}

.Nnavigation span.nav_ext {
        border: none;
        background: transparent;
}


</style>
<table cellpadding="4" cellspacing="0" width="100%">
HTML;

$date="<a href="".$PHP_SELF."?mod=konkurs&action=usprognozedit&prid=".$row['id_p']."" >" .$row['date_p']. "</a>"; // тут и далее определяем переменные, которые будем выводить (у вас они будут свои...)
//$konk_name=...
//...
//...
//...
//...

while ($row = $db->get_row($zapros)) // вывод тела таблицы
{  
echo <<<HTML
<tr {$trstyle} >
           <td style="padding:4px;">{$date}</td>
           <td style="padding:4px;">{$konk_name}</td>
           <td style="padding:4px;">{$team} &nbsp;{$mtime}</td>
           <td style="padding:4px;" align="center">{$schet}</td>
           <td style="padding:4px;" align="center">{$prognoz}</td>
           <td style="padding:4px;" align="center">{$ochki}</td>
           <td style="padding:4px;">{$user}</td>
           <td style="padding:4px;"><input type="checkbox" name="adv[{$row['id_p']}]"></td>
 </tr>
HTML;
}
echo "</table>";



echo "<center>{$navigac}</center>"; // навигация на странице


?>    

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.