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

Форум PHP

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

 

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

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

тема: Постраничная навигация
 
 автор: ekstrom   (21.04.2010 в 16:43)   письмо автору
 
 

$num=5; 
$page=intval($_GET['page']); 
if ($page=='') {$page=1;} 
$posts=mysql_result(mysql_query("SELECT COUNT(*) FROM abstract"),0); 
$total=intval(($posts - 1) / $num) + 1; 
if(empty($page) or $page < 0) $page = 1; 
if($page > $total) $page = $total; 

if ($page != 1) $pervpage = '<a href="?page=1">'. ($page != 1) .'</a> 
<a href="?page='. ($page - 1) .'">&lt;</a> '; 
if ($page != $total) $nextpage = ' <a href="?page='. ($page + 1) .'">&gt;</a> 
<a href="?page=' .$total. '">&gt;&gt;</a>'; 
if($page - 2 > 0) $page2left = ' <a href="?page='. ($page - 2) .'">'. ($page - 2) .'</a> '; 
if($page - 1 > 0) $page1left = ' <a href="?page='. ($page - 1) .'">'. ($page - 1) .'</a> '; 
if($page + 2 <= $total) $page2right = ' <a href="?page='. ($page + 2) .'">'. ($page + 2) .'</a>'; 
if($page + 1 <= $total) $page1right = ' <a href="?page='. ($page + 1) .'">'. ($page + 1) .'</a>'; 
echo '<div class="podtitle">страницы: <small>'.$page2left.$page1left.'</small><b>('.$page.')</b><small>'.$page1right.$page2right.'</small></div><div class=kntent><hr/><a href="../">Картинки</a><br><a href="../../">Загрузки</a><br><a href="../../../">На главную</a><br>';

сейчас постраничная навигация выглядит так:1 2 3.Как переделать код,чтоб было 1 2 3...10?

  Ответить  
 
 автор: serenya1983   (21.04.2010 в 17:07)   письмо автору
 
   для: ekstrom   (21.04.2010 в 16:43)
 

Можжно так:
$href - ссылка на страницу, которая будет открываться при нажатии на номер
$maxlistpage - сколько строк на странице выводить
$res - результат запроса к BD
$q - сам запрос
результат новый $res
Функция добавляет к заросу limit, поэтому его не должно быть в запроса к BD
Например:

$q="SELECT * FROM abstract where 1";
$res=mysql_query($q);  
$res=print_list_page("index.php",10,$res,$q);


function print_list_page($href,$maxlistpage,$res,$q)//печать страниц
{
    $countfind=mysql_num_rows($res);
    if ($countfind>$maxlistpage)
    {
    $page_count=ceil($countfind/$maxlistpage);
    if (!isset($_GET['page'])) $tekpage=1; else $tekpage=$_GET['page'];
    if ($tekpage>$page_count) $tekpage=1;
    $start_find=($tekpage-1)*$maxlistpage;
    $res=mysql_query($q." limit $start_find,$maxlistpage");
    $count=mysql_num_rows($res);

    if ($countfind>$maxlistpage)
    {
        print "<div align='right'>";
        $start_i=$tekpage-3;if ($start_i<=0) $start_i=1;
        $end_i=$tekpage+4;if ($end_i>$page_count) $end_i=$page_count+1;
                                             
        if ($tekpage>5) print "<A HREf='$href&page=1'>1...</A>";
        if ($tekpage==5) print "<A HREf='$href&page=1'>1</A>";
                                             
        for ($i=$start_i;$i<$end_i;$i++)
        {
            print " <A HREF='$href&page=$i'>$i</A> ";
        }
        if ($tekpage<$page_count-4) print "<A HREf='$href&page=$page_count'>...$page_count</A>";
        if ($tekpage==$page_count-4) print "<A HREf='$href&page=$page_count'>$page_count</A>";
        print "</div>";
    }
    }
    return $res;
    
}

  Ответить  
 
 автор: mihdan   (21.04.2010 в 17:45)   письмо автору
 
   для: ekstrom   (21.04.2010 в 16:43)
 

http://tigir.com/paging.htm

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

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