Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничный вывод С ОГРАНИЧЕНИЕМ
 
 автор: samb100   (29.06.2009 в 05:39)   письмо автору
 
 

Есть такой код для постраничного вывода:


$p = 1;
do {
    if ($page == $p)
        { echo "<a href=cat.php?id_categ=$id_categ&page=$p><b><font size=4>$p</font></b></a>\n"; 
        }
    else 
        { echo "<a href=cat.php?id_categ=$id_categ&page=$p>$p</a>\n"; 
        }
    $p++;
    }    
while ($p <= $total); 


где
// $page - это $_GET['page']
// $total - общее число записей в БД

Чтобы сделать постраничный вывод я делю общее количество записей в БД на желаемое количество записей
на одной странице и получаю число страниц. Далее с помощью формулы и LIMIT делаю постраничный вывод на страницы.
Всё это работает нормально.

Но скоро на сайте будет более 100 страниц, поэтому надо как-то ограничить число страниц на одной странице (сорри за тафтологию),
т.е. сначала выводятся 5 страниц, затем кликая на ">>" выводятся следующие 5 страниц и так далее,
пока не закончатся все страницы на сайте.

Как такое сделать?

Более наглядно это видно на скриншоте: http://mir44.ru/tmp/page.gif

  Ответить  
 
 автор: cheops   (29.06.2009 в 11:33)   письмо автору
 
   для: samb100   (29.06.2009 в 05:39)
 

Возможно вас заинтересует тема по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3044.

  Ответить  
 
 автор: nikita2206   (29.06.2009 в 13:00)   письмо автору
 
   для: samb100   (29.06.2009 в 05:39)
 

патсталом!!! когда вы код оформлять научитесь???
вот ваш код в нормальном оформлении, разве не лучше выглядет??::
<?
$p 
1;
do{
    if (
$page == $p) echo '<a href=cat.php?id_categ='.$id_categ.'&page='.$p.'><b><font size=4>'.$p.'</font></b></a>'."\n";
    else echo 
'<a href=cat.php?id_categ='.$id_categ.'&page='.$p.'>'.$p.'</a>'."\n";
    
$p++;
}while (
$p <= $total);

  Ответить  
 
 автор: Петр   (29.06.2009 в 14:48)   письмо автору
 
   для: samb100   (29.06.2009 в 05:39)
 

<?php
// Постраничная навигация;
function pager($all$page$a 20$b 5) {
    
// Количество записей на странице;
    
$page_count $a;
    
// Общее число страниц
    
$page_total intval((count($all)-1)/$page_count)+1;
    
// ;
    
if (empty($page) or $page 0$page 1;
    if (
$page $page_total$page $page_total;
    
// ;
    
$m $b;
    
$n floor($m/2);
    
// ;
    
if ($m $page_total) {
        if (
$page <= $n) {
            for (
$i=1$i<=$m$i++)
                
$pager['pages'][] = $i;
        } elseif (
$page > ($page_total-$n)) {
            for (
$i=($page_total-$m+1); $i<=$page_total$i++)
                
$pager['pages'][] = $i;
        } else {
            for (
$i=($page-$n); $i<=($page+$n); $i++)
                
$pager['pages'][] = $i;
        }
    } else {
        for (
$i=(1); $i<=($page_total); $i++)
            
$pager['pages'][] = $i;
    }
    
// ;
    
$page_start $page $page_count $page_count;
    
// ;
    
$pager['current'] = $page;
    
$pager['total'] = $page_total;
    
$pager['start'] = $page_start;
    
$pager['count'] = $page_count;
    
// ;
    
return $pager;
}
?>

Передаете в функцию pager нужный массив и она сама вернет нужный результат. Переменные $a и $b - количество записей на странице и количество страниц.

Например:
$news = запрос в БД (содержи все записи)
$news = pager($news, $_GET['page']);

Навигация:
$pager['start'] - первая страница
$pager['total'] - последняя страница
$pager['pages'] - массив номеров страниц (вывод циклом)
$pager['current'] - текущая страница

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования