<code
class
=
"php"
>
$adjacents
= 3;
$page
= (int)
$_GET
[
"page"
] ?? 1;
$limit
= 5;
$start
= (
$page
- 1) *
$limit
;
$data
=
$db
->query(
"SELECT * FROM mytable LIMIT $start, $limit"
)->fetchAll();
$total_pages
=
count
(
$data
);
$prev
=
$page
- 1;
$next
=
$page
+ 1;
$lastpage
=
ceil
(
$total_pages
/
$limit
);
$lpm1
=
$lastpage
- 1;
$pagination
=
"<nav aria-label='page navigation'><ul class='pagination'>"
;
$disabled
= (
$page
=== 1) ?
"disabled"
:
""
;
$pagination
.=
"<li class='page-item $disabled'><a class='page-link' href='?page=$prev'>« previous</a></li>"
;
if
(
$lastpage
< 7 + (
$adjacents
* 2)) {
for
(
$i
= 1;
$i
<=
$lastpage
;
$i
++) {
$active
= (
$i
===
$page
) ?
"active"
:
""
;
$pagination
.=
"<li class='page-item $active'><a class='page-link' href='?page=$i'>$i</a></li>"
;
}
}
elseif
(
$lastpage
> 5 + (
$adjacents
* 2)) {
if
(
$page
< 1 + (
$adjacents
* 2)) {
for
(
$i
= 1;
$i
< 4 + (
$adjacents
* 2);
$i
++) {
$active
= (
$i
===
$page
) ?
"active"
:
""
;
$pagination
.=
"<li class='page-item $active'><a class='page-link' href='?page=$i'>$i</a></li>"
;
}
$pagination
.=
"<li class='page-item disabled'><span class='page-link'>...</span></li>"
;
$pagination
.=
$last_pages
;
}
elseif
(
$lastpage
- (
$adjacents
* 2) >
$page
&&
$page
> (
$adjacents
* 2)) {
$pagination
.=
$first_pages
;
$pagination
.=
"<li class='page-item disabled'><span class='page-link'>...</span></li>"
;
for
(
$i
=
$page
-
$adjacents
;
$i
<=
$page
+
$adjacents
;
$i
++) {
$active
= (
$i
===
$page
) ?
"active"
:
""
;
$pagination
.=
"<li class='page-item $active'><a class='page-link' href='?page=$i'>$i</a></li>"
;
}
$pagination
.=
"<li class='page-item disabled'><span class='page-link'>...</span></li>"
;
$pagination
.=
$last_pages
;
}
else
{
$pagination
.=
$first_pages
;
$pagination
.=
"<li class='page-item disabled'><span class='page-link'>...</span></li>"
;
for
(
$i
=
$lastpage
- (2 + (
$adjacents
* 2));
$i
<=
$lastpage
;
$i
++) {
$active
= (
$i
===
$page
) ?
"active"
:
""
;
$pagination
.=
"<li class='page-item $active'><a class='page-link' href='?page=$i'>$i</a></li>"
;
}
}
}
$disabled
= (
$page
===
$lastpage
) ?
"disabled"
:
""
;
$pagination
.=
"<li class='page-item $disabled'><a class='page-link' href='?page=$next'>next »</a></li>"
;
$pagination
.=
"</ul></nav>"
;
if
(
$lastpage
<= 1) {
$pagination
=
""
;
}
echo
$pagination
;
foreach
(
$data
as
$row
) {
}
echo
$pagination
;</code>