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.
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