постраничка
- <?php
- $page = (isset($_GET['page']) && $_GET['page'] > 0) ? intval($_GET['page']) : 1;
- $arr = range(1, 82); /* тест массив */
- $n = 5; /* количество элементов на станицу */
- $total = sizeof($arr); /* всего элементов , для базы это запрос */
- // $sep = '?mode=' . $_GET['mode'] . '&id=' . $id . '&';
- $sep = '?';
- $start = $page==1 ? 0 : ($page - 1) * $n;
- $end = $page==ceil($total / $n) ? $total : $page * $n;
- echo '<div>' . pages($sep, $n, $total) . '</div>';
- /* для файлов */
- for ($i=$start;$i<$end;$i++) {
- echo $arr[$i] . '<br/>';
- }
- echo '<div>' . pages($sep, $n, $total) . '</div>';
- /* для базы*/
- /* limit $start, $n */
- function pages($url, $str, $total) {
- global $page;
- $totalpage = ceil($total / $str);
- if ($page > $totalpage) $page = $totalpage;
- if ($page == 1) {
- #$pervpage = '<a href="' . $url . 'page=1"><< </a>';
- } else {
- $pervpage = '<a href="' . $url . 'page=' . ($page - 1) . '"><<</a> ';
- }
- if ($page != $totalpage) {
- $nextpage = ' <a href="' . $url . 'page=' . ($page+1) . '">>></a>';
- } else {
- #$nextpage = '<a href="' . $url . 'page=' . $totalpage . '"> >></a>';
- }
- if ($page > 4) $pp = '<a href="' . $url . 'page=1">1 </a> ... ';
- if ($totalpage - 4 >= $page) $pt = ' ... <a href="' . $url . 'page=' . $totalpage . '">' . $totalpage . '</a>';
- if ($page-3 > 0) $page3left = '<a href="' . $url . 'page=' . ($page-3) . '">' . ($page-3) . '</a> | ';
- if ($page-2 > 0) $page2left = '<a href="' . $url . 'page=' . ($page-2) . '">' . ($page-2) . '</a> | ';
- if ($page-1 > 0) $page1left = '<a href="' . $url . 'page=' . ($page-1) . '">' . ($page-1) . '</a> | ';
- if ($page+3 <= $totalpage) $page3right = ' | <a href="' . $url . 'page=' . ($page+3) . '">' . ($page+3) . '</a>';
- if ($page+2 <= $totalpage) $page2right = ' | <a href="' . $url . 'page=' . ($page+2) . '">' . ($page+2) . '</a>';
- if ($page+1 <= $totalpage) $page1right = ' | <a href="' . $url . 'page=' . ($page+1) . '">' . ($page+1) . '</a>';
- return $pervpage . $pp . $page3left . $page2left . $page1left . '[ <b>' . $page . '</b> ]' . $page1right . $page2right . $page3right . $pt . $nextpage;
- }
- ?>
пример
<< 1 ... 8 | 9 | 10 | [ 11 ] | 12 | 13 | 14 ... 17 >>
<< 1 ... 8 | 9 | 10 | [ 11 ] | 12 | 13 | 14 ... 17 >>