v2.5.2
Giriş yap

Bootstrap paginations butonlarını sayfalama sistemine uyarlama

salm552
719 defa görüntülendi ve 1 kişi tarafından değerlendirildi

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.

makifgokce
1219 gün önce

1.Sorunun cevabı @merchizm 'in de dediği gibi

function pagination($current_page, $total_pages, $page_url){
// bla bla bla
}

kısmını function.php ye atman yeterli.

2.Sorunuda anladığım kadarıyla mysql'deki JOIN fonksiyonuyla halledebilirsin.
https://www.db-fiddle.com/f/u7iaQy3VT7tFjtFMEi4uRg/0
https://www.w3schools.com/sql/sql_join_inner.asp
https://www.w3schools.com/sql/sql_join_left.asp