?

Log in

No account? Create an account
пейджинг
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>";
}

В результате будет что-то типа