Я работаю над алгоритмом разбиения на страницы в PHP. Я могу догадаться, что ему нужно пространство для улучшения, поэтому я хотел бы подумать о том, как его улучшить, будь то очистка самого кода с точки зрения UI / UX или всего, что вы можете придумать.
Алгоритм должен выводить нумерацию страниц следующим образом:
1 2 3 ... 6 7 8 ... 97 98 99
или это:
1 2 3 4 5 ... 6 7 8 9 10
или это:
1 2 3
Вот мой код:
<?php
if(!is_null($_GET['page'])) {
$currentPage = $_GET['page'];
} else {
$currentPage = 1;
}
if($pages != null) {
echo 'Page: ';
}
// Less than 10 pages
if($pages <= 10) {
for($page = 1; $page <= $pages; $page++) {
echo '<a href="?page=' . $page . '">' . $page . '</a> ';
}
// Greater than 10 pages, and we're somewhere in the middle of them
} elseif(($pages > 10) && ($currentPage > 4) && ($currentPage < $pages - 3)) {
for($page = 1; $page <= 3; $page++) {
echo '<a href="?page=' . $page . '">' . $page . '</a> ';
}
echo '... ';
for($page = $currentPage - 1; $page <= $currentPage + 1; $page++) {
echo '<a href="?page=' . $page . '">' . $page . '</a> ';
}
echo '... ';
for($page = $pages - 2; $page <= $pages; $page++) {
echo '<a href="?page=' . $page . '">' . $page . '</a> ';
}
// Greater than 10 pages, and we're towards the end of the pages
} else {
for($page = 1; $page <= 5; $page++) {
echo '<a href="?page=' . $page . '">' . $page . '</a> ';
}
echo '... ';
for($page = $pages - 5; $page <= $pages; $page++) {
echo '<a href="?page=' . $page . '">' . $page . '</a> ';
}
}