Nikolay Zavada (annykey) wrote,
Nikolay Zavada
annykey

пейджинг

сидел вот и очередной раз писал код на PHP для постраничной навигации
-------------------------------
$per_page = 5;
$page = ($_GET['page']>1)?$_GET['page']:1;
$offset = ($page-1)*$per_page;
этот $offset используем в SQL, то есть в конце запроса будет  LIMIT ".$offset.", ".$per_page

ну и вот код для вывода самого пейджинга
$count_pages = ceil(mysql_num_rows($recent)/$per_page);
if($count_pages>1){
  echo "<span style='width:150px;display:inline-block;text-align:right;'>";
  if($page>1){
    $prev_page = $page-1;
    echo "&laquo; <a href='./record.php?page=".$prev_page."'>Предыдущая страница</a>";
  }
  echo "</span>";

  $offset_left = ($count_pages - $page > 5)? 5 : 5+(5-($count_pages - $page));
  $offset_right = ($page > 5)? 5 : 5+(5-$page);

  $start = ($page-$offset_left>1)? $page-$offset_left : 1;
  $finish = ($page + $offset_right > $count_pages)? $count_pages : $page + $offset_right ;

  $start_page = ($count_pages>10 && $page-5>1)? "<a class='digit' href='./record.php?page=1'>1</a> ... " : "";
  $finish_page = ($count_pages>10 && $page+5<$count_pages)? " ... <a class='digit' href='./record.php?page=".$count_pages."'>".$count_pages."</a>" : "";

  echo $start_page;
  for($i=$start;$i<=$finish;$i++){
    if($i == $page){
      echo "<span class='digit'>".$i."</span>";
    }else{
      echo "<a class='digit' href='./record.php?page=".$i."'>".$i."</a>";
    }
  }
  echo $finish_page;

  echo "<span>";
  if($page<$count_pages){
    $next_page = $page+1;
    echo "<a href='./record.php?page=".$next_page."#site'>Следующая страница</a> &raquo;";
  }
  echo "</span>";
}

В результате будет что-то типа
Tags: программинг
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments