Bootstrap paginations butonlarını sayfalama sistemine uyarlama
Hazır bulduğum sayfalama sistemini bootstrap paginations butonları ile uyarlamaya çalıştım ancak her defasında bir butonu uyduramadım yardımcı olabilir misiniz?
<?php
try{
$db = new PDO("mysql:host=localhost;dbname=veri;charset=utf8", "root",""); //veri tabını baglantısı
}catch(PDOException $e){
echo $e->getMessage();
}
$Sayfa = @ceil($_GET['sayfa']); //5,2 girilirse eğer get o zaman onu tam sayı yapar yanı 5 yapıyoruz bu kod ile
if ($Sayfa < 1) { $Sayfa = 1;} //eğer get değeri yerine girilen sayi 1 den küçükse sayfa değerini 1 yapıyoruz yani 1. sayfaya atıyoruz
$Say = $db->query("select * from urun order by id DESC"); //makale sayısını çekiyoruz
$ToplamVeri = $Say->rowCount(); //makale sayısını saydırıyoruz
$Limit = 3; //bir sayfada kaç içerik çıkacağını belirtiyoruz.
$Sayfa_Sayisi = ceil($ToplamVeri/$Limit); //toplam veri ile limiti bölerek her toplam sayfa sayısını buluyoruz
if($Sayfa > $Sayfa_Sayisi){$Sayfa = $Sayfa_Sayisi;} //eğer yazılan sayı büyükse eğer toplam sayfa sayısından en son sayfaya atıyoruz kullanıcıyı
$Goster = $Sayfa * $Limit - $Limit; // sayfa= 2 olsun limit=3 olsun 2*3=6 6-3=3 buranın değeri 2. sayfada 3'dür 3-4-5-6... sayfalarda da aynı işlem yapılıp değer bulunur
$GorunenSayfa = 5; //altta kaç tane sayfa sayısı görüneceğini belirtiyoruz.
$Makale = $db->query("select * from urun order by id DESC limit $Goster,$Limit"); //yukarda göstere attıgımız değer diyelim ki 3 o zaman 3.'id den başlayarak limit kadar veri ceker.
$MakaleAl = $Makale->fetchAll(PDO::FETCH_ASSOC);
?>
<div id="Makale">
<?php foreach($MakaleAl as $MakaleCek){?>
<div class="first">
<div class="card" style="width: 18rem;">
<img src="./cardimgs/card.jpg" width="50px" height="150px" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title"><?=$MakaleCek["urun_isim"]?></h5>
<p class="card-text"><?=$MakaleCek["urun_aciklama"]?></p>
<a href="#" class="btn btn-primary">İncele</a>
</div>
</div>
</div>
<?php } ?>
<?php if($Sayfa > 1){?>
<span class="say_sabit"><a href="index.php?sayfa=1">İlk</a></span> <!--1. Sayfaya gider-->
<div class="say_sabit"><a href="index.php?sayfa=<?=$Sayfa - 1?>">Geri</a></div> <!--Bir Önceki Sayfaya Gitmek İçin Sayfa Değerini 1 eksiltiyoruz-->
<?php } ?>
<?php
for($i = $Sayfa - $GorunenSayfa; $i < $Sayfa + $GorunenSayfa +1; $i++){ // i kaç ise o sayıdan başlar 1-2-3-4-5 yazmaya. mesela sayfa 7deyiz 7 - 5 = 2'dir 2 sayfadan sonra sayfalamaya başlar yani 2-3-4-5-6-7 gibi bu aynı mantıkla devam eder.
if($i > 0 and $i <= $Sayfa_Sayisi){
if($i == $Sayfa){
echo '<span class="say_aktif">'.$i.'</span>'; //eğer i ile sayfa değerleri aynıysa o zaman onu aktif css'si ekle
}else{
echo '<a class="say_a" href="index.php?sayfa='.$i.'">'.$i.'</a>'; //eğer aynı değilse normal listele
}
}
}
?>
<?php if($Sayfa != $Sayfa_Sayisi){?>
<div class="say_sabit"><a href="index.php?sayfa=<?=$Sayfa + 1?>">İleri</a></div><!--Bir Sonra ki Sayfaya Gitmek için sayfa değerini 1 artırıyoruz.-->
<div class="say_sabit"><a href="index.php?sayfa=<?=$Sayfa_Sayisi?>">Son</a></div><!--Buldugumuz Toplam Sayfa Sayısını buraya cekiyoruz tıklandıgında en son sayfaya gider-->
<?php } ?>
<nav aria-label="Page navigation example">
<ul class="pagination">
<li class="page-item"><a class="page-link" href="#">Previous</a></li>
<li class="page-item"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item"><a class="page-link" href="#">Next</a></li>
</ul>
</nav>
Yardımcı olan arkadaşlara şimdiden çok teşekkürler.
function pagination($current_page, $total_pages, $page_url)
{
$pagination = '';
if($total_pages > 0 && $total_pages != 1 && $current_page <= $total_pages){
$pagination .= '<ul class="pagination">';
$right_links = $current_page + 3;
$previous = $current_page - 1;
$next = $current_page + 1;
$first_link = true;
if($current_page > 1){
$previous_link = ($previous==0)?1:$previous;
$pagination .= '<li class="page-item"><a class="page-link" href="'.$page_url.'?sayfa=1">İlk</a></li>';
$pagination .= '<li><a class="page-link" href="'.$page_url.'?sayfa='.$previous_link.'">Önceki</a></li>';
for($i = ($current_page-2); $i < $current_page; $i++){
if($i > 0){
$pagination .= '<li><a class="page-link" href="'.$page_url.'?sayfa='.$i.'">'.$i.'</a></li>';
}
}
$first_link = false;
}
if($first_link){
$pagination .= '<li class="page-item disabled"><a class="page-link">'.$current_page.'</a></li>';
}elseif($current_page == $total_pages){
$pagination .= '<li class="page-item disabled"><a class="page-link">'.$current_page.'</a></li>';
}else{ //regular current link
$pagination .= '<li class="page-item disabled"><a class="page-link">'.$current_page.'</a></li>';
}
for($i = $current_page+1; $i < $right_links ; $i++){
if($i<=$total_pages){
$pagination .= '<li class="page-item"><a class="page-link" href="'.$page_url.'?sayfa='.$i.'">'.$i.'</a></li>';
}
}
if($current_page < $total_pages){
$next_link = ($next > $total_pages)? $total_pages : $next;
$pagination .= '<li class="page-item"><a class="page-link" href="'.$page_url.'?sayfa='.$next_link.'">İleri</a></li>';
$pagination .= '<li class="page-item"><a class="page-link" href="'.$page_url.'?sayfa='.$total_pages.'">Son</a></li>';
}
$pagination .= '</ul>';
}
return $pagination;
}
$x = $db->prepare("select id from urun order by id DESC");
$x->execute();
$z = $x->fetchAll(PDO::FETCH_ASSOC);
$pageLength = 10;
$page = isset($_GET['sayfa']) ? $_GET['sayfa'] : 1;
$pages = ceil(count($z)/$pageLength);
if($page < 1) {
$page = 1;
}
if($page > $pages){
$page = $pages;
}
$start = ($page - 1) * $pageLength;
$dt = $db->prepare("select * from urun order by id DESC limit $start, $pageLength");
$dt->execute();
$data = $dt->fetchAll(PDO::FETCH_ASSOC);
foreach($data AS $item)
{
//verileri yazdır
}
echo pagination($page, $pages, "http://localhost/index.php");