Вход Регистрация
* TRUEтень

Постраничная навигация (new)

  1. <?php
  2. function pagenation($page, $count_pages, $modrew = TRUE) {
  3. /*
  4. $back - ссылка НАЗАД
  5. $forward - ссылка ВПЕРЕД
  6. $startpage - ссылка в НАЧАЛО
  7. $endpage - ссылка в КОНЕЦ
  8. $page2left - вторая страница слева
  9. $page1left - первая страница слева
  10. $page2right - вторая страница справа
  11. $page1right - первая страница справа
  12. */
  13.  
  14. $uri = '?';
  15. if (!$modrew) {
  16. /* Если есть параметры в адресной строке */
  17. if ($_SERVER['QUERY_STRING']) {
  18. unset($_GET['page']);
  19. foreach ($_GET as $key => $value) {
  20. $uri .= $key . '=' . $value . '&';
  21. }
  22. }
  23. } else {
  24. $url = $_SERVER['REQUEST_URI'];
  25. $url = explode("?", $url);
  26. if (!empty($url[1])) {
  27. $params = explode("&", $url[1]);
  28. foreach ($params as $param) {
  29. if (!preg_match("#page=#", $param)) {
  30. $uri .= $param .'&';
  31. }
  32. }
  33. }
  34. }
  35. if ($page > 1) {
  36. $back = '<a class="nav-link" href="'.$uri.'page='.($page - 1).'"><</a>';
  37. }
  38. if ($page < $count_pages) {
  39. $forward = '<a class="nav-link" href="'.$uri.'page='.($page + 1).'">></a>';
  40. }
  41. if ($page > 3) {
  42. $startpage = '<a class="nav-link" href="'.$uri.'page=1">«</a>';
  43. }
  44. if ($page < ($count_pages - 2)) {
  45. $endpage = '<a class="nav-link" href="'.$uri.'page='.$count_pages.'">»</a>';
  46. }
  47. if (($page - 2) > 0) {
  48. $page2left = '<a class="nav-link" href="'.$uri.'page='.($page - 2).'">'.($page - 2).'</a>';
  49. }
  50. if (($page - 1) > 0) {
  51. $page1left = '<a class="nav-link" href="'.$uri.'page='.($page - 1).'">'.($page - 1).'</a>';
  52. }
  53. if (($page + 2) <= $count_pages) {
  54. $page2right = '<a class="nav-link" href="'.$uri.'page='.($page + 2).'">'.($page + 2).'</a>';
  55. }
  56. if (($page + 1) <= $count_pages) {
  57. $page1right = '<a class="nav-link" href="'.$uri.'page='.($page + 1).'">'.($page + 1).'</a>';
  58. }
  59. return $startpage . $back . $page2left . $page1left . '<span class="nav-active">' . $page . '</span>' . $page1right . $page2right . $forward . $endpage;
  60. }
  61.  
  62. [b]Пример использования:[/b]
  63. $perpage = 10; // Записей на страницу
  64.  
  65. $count = mysqli_fetch_row(mysqli_query($db, "SELECT COUNT(*) FROM files"));
  66. $total = $count[0]; // Всего товаров
  67.  
  68. $count_pages = ceil($total / $perpage); // Всего страниц
  69. if (!$count_pages) { // минимум 1 страница
  70. $count_pages = 1;
  71. }
  72. if (!empty($_GET['page'])) { // текущая страница
  73. $page = abs((int)$_GET['page']);
  74. if (!$page) {
  75. $page = 1;
  76. }
  77. } else {
  78. $page = 1;
  79. }
  80. if ($page > $count_pages) {
  81. $page = $count_pages;
  82. }
  83. $start_pos = ($page - 1) * $perpage;
  84.  
  85. $pagenation = pagenation($page, $count_pages); // постраничная навигация
  86.  
  87. echo $pagenation, '
  88. '; // Выводим
  89.  
  90. $query = "SELECT * FROM files ORDER BY id DESC LIMIT $start_pos, $perpage";
  91. $result = mysqli_query($db, $query);
  92. while ($row = mysqli_fetch_array($result)):
  93. ?>
  94. <a href="files/<?= $row['path'] ?>"><img src="files/<?= $row['path_mini'] ?>" alt=""/></a>
  95.  
  96. <?php
  97. endwhile;
  98. ?>
» Описание: Еще один вариант постраничной навигации. Запоминает GET параметры, так же поддерживает ссылки вида ЧПУ.
От: Миледи
» Время добавления: 19 Дек 2014 в 09:21
» Посмотров: 1088
» textarea
» Рейтинг: [+1 | -0]
Комментарии [0]
Онлайн: 1
Реклама