Simple Pagination in Php
23-09-2017Php Codes
<div class="pagination-wrapper">
<ul class="pagination">
<li><a href="?page=<?= $page > 1 ? ( $page - 1 ) : '1' ?>" aria-label="Previous"><span
aria-hidden="true"><i
class="fa fa-long-arrow-left"></i> Önceki Sayfa</span></a></li>
<?php
$databaseUtil = new \hatim\Libraries\DatabaseUtil();
$limit = 2;
$total = $databaseUtil->count( "hatim" );
$pages = ceil( $total / $limit );
// What page are we currently on?
$page = get_query_var( "page" );
$page = $page == 0 ? 1 : $page;
// Calculate the offset for the query
$offset = ( $page - 1 ) * $limit;
$hatims = $databaseUtil->all( 'hatim', $limit, $offset );
$link = "";
if ( $pages >= 1 && $page <= $pages ) {
$counter = 1;
$link = "";
if ( $page > ( $limit / 2 ) ) {
$link .= "<li><a href=\"?page=1\">1 </a> </li>... ";
}
for ( $x = $page; $x <= $pages; $x ++ ) {
if ( $counter <= $limit ) {
if ( $page == $x ) {
$link .= "<li class='active'><a href=\"?page=" . $x . "\">" . $x . " </a></li>";
} else {
$link .= "<li><a href=\"?page=" . $x . "\">" . $x . " </a></li>";
}
}
$counter ++;
}
if ( $page < $pages - ( $limit / 2 ) ) {
$link .= "... " . "<li><a href=\"?page=" . $pages . "\">" . $pages . " </a></li>";
}
}
echo $link; ?>
<li><a href="?page=<?= $page + 1 ?>" aria-label="Next">
<span aria-hidden="true">Sonraki Sayfa <i class="fa fa-long-arrow-right"></i></span>
</a>
</li>
</ul>
</div>
DatabaseUtil Class
class DatabaseUtil{
public function count( $table ) {
global $wpdb;
$table_name = $wpdb->prefix . $table;
return intval($wpdb->get_row( "select count(*) as count from $table_name" )->count);
}
public function all( $table, $limit, $offset = 0 ) {
global $wpdb;
$table_name = $wpdb->prefix . $table;
return $wpdb->get_results( "select * from " . $table_name .
" order by id desc".
" LIMIT " . $limit .
" OFFSET " . $offset );
}
}
Styling
/* Pagination */
.pagination-wrapper {
}
.pagination {
font-size: 14px;
color: #fff;
}
.pagination-wrapper ul {
list-style: none;
}
.pagination li {
float: left;
text-decoration: none;
}
.pagination li:first-child a,
.pagination li:last-child a {
padding: 12px 30px;
}
.pagination li:nth-child(11) a {
padding-right: 92px;
}
.pagination li a {
color: #fff;
background-color: #27292a;
border: 1px solid #0e0f0f;
padding: 12px 15px;
text-decoration: none;
}
.pagination li a:hover,
.pagination .active > a,
.pagination .active > a:focus,
.pagination .active > a:hover {
color: #fff;
}
.page-breadcrumbs {
position: relative;
margin: 85px 0 15px;
}
.pagination > li:last-child > a, .pagination > li:last-child > span {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.top-user-section a:hover,
.post-content .entry-meta li:hover i,
.list-post li a:hover i,
.gallery-turner a:hover,
.widget .nav-justified > li > a:hover i,
.widget .nav-tabs.nav-justified > .active > a i,
.widget .tab-content .entry-meta li a:hover,
.footer-menu .navbar-nav li a:hover,
.widget .tab-pane .tag-cloud li a:hover,
#twitter-feed a:hover,
.widget address a:hover,
.details-news .entry-meta .posted-by a:hover,
.comments-wrapper .media-body h2 a:hover,
.comments-wrapper .media-body .replay,
.author-listing .single-author h2 a:hover,
.single-member .social-icons li i,
.contact-info ul li a:hover,
.subscribe-me h1 {
color: #ed1c24;
}
.section-title:before,
.btn-primary,
.badge,
.catagory a,
.owl-theme .owl-controls .owl-page.active span,
.owl-theme .owl-controls.clickable .owl-page:hover span,
#latest-news .owl-controls .owl-page.active span,
#latest-news .owl-controls.clickable .owl-page:hover span,
.widget.news-letter button,
.pagination li a:hover,
.pagination .active > a,
.pagination .active > a:focus,
.pagination .active > a:hover,
#breaking-news span,
.subscribe-me button,
.top-user-form .btn:hover {
background-color: #ed1c24;
}
.form-control:focus,
.widget.news-letter input:focus,
.pagination li a:hover,
.pagination .active > a,
.pagination .active > a:focus,
.pagination .active > a:hover,
.subscribe-me button,
.btn-danger {
border-color: #ed1c24;
}
#mainmenu .sub-catagory ul li a:hover,
.cat-menu .active a,
.cat-menu a:hover {
border-bottom: 2px solid #ed1c24;
}
.subscribe-me button:hover,
.top-user-form .btn,
.widget.news-letter button:hover,
.widget.news-letter button:focus {
background-color: #f14950
}
.single-member .overlay {
background-color: rgba(237, 28, 36, 0.75);
}
Result