Php sayfalama
<?php
echo "Merhaba php sayfalama yapmak istiyorum yapıyorum ama istediğim gibi değil ben
[1][2[3][4][5]...[20] gibisinden sıralama yaptırmak istiyorum nasıl yaparım sizce
";
?>
Benim kodlarım bu şekilde
<?php
$sayfada = 16;
$sorgu=$db->prepare("SELECT * from urunler");
$sorgu->execute();
$toplam_icerik=$sorgu->rowCount();
$toplam_sayfa = ceil($toplam_icerik / $sayfada);
// eğer sayfa girilmemişse 1 varsayalım.
$sayfa = isset($_GET['sayfa']) ? (int) $_GET['sayfa'] : 1;
// eğer 1'den küçük bir sayfa sayısı girildiyse 1 yapalım.
if($sayfa < 1) $sayfa = 1;
// toplam sayfa sayımızdan fazla yazılırsa en son sayfayı varsayalım.
if($sayfa > $toplam_sayfa) $sayfa = $toplam_sayfa;
$limit = ($sayfa - 1) * $sayfada;
$urunsor=$db->prepare("SELECT * FROM urunler WHERE urun_durum=:urun_durum ORDER BY urun_id DESC limit $limit,$sayfada");
$urunsor->execute(array('urun_durum' => 1));
<?php
$s=0;
while ($s < $toplam_sayfa) {
$s++; ?>
<?php
if ($s==$sayfa) {?>
<li class="page-item">
<a class="page-link" href="index.php?sayfa=<?php echo $s; ?>">
<?php echo $s; ?>
</a>
</li>
<?php } else {?>
<li class="page-item">
<a class="page-link" href="index.php?sayfa=<?php echo $s; ?>">
<?php echo $s; ?>
</a>
</li>
<?php } }
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
Evet atladığım yer olmuş ama ilk başta belirttiğim gibi benim istediğim sayfalama şekli
Önceki [1] [2] [3] [4] [5]...[20] Sonraki tarzı Googlede gezinirken bir makale ile karşılaştım
istediğim şeyi sağlıyor fakat ... dan sonra INF adında bir buton çıkıyor onu anlayamadım
Takılan arkadaşlar olursa vereceğim örnekle sorunlarını halledebilirler
<?php
$sayfada = 16;
$sorgu=$db->prepare("SELECT * from urunler");
$sorgu->execute();
$toplam_icerik=$sorgu->rowCount();
$toplam_sayfa = ceil($toplam_icerik / $limit);
// eğer sayfa girilmemişse 1 varsayalım.
$sayfa = isset($_GET['sayfa']) ? (int) $_GET['sayfa'] : 1;
// eğer 1'den küçük bir sayfa sayısı girildiyse 1 yapalım.
if($sayfa < 1) $sayfa = 1;
// toplam sayfa sayımızdan fazla yazılırsa en son sayfayı varsayalım.
if($sayfa > $toplam_sayfa) $sayfa = $toplam_sayfa;
$limit = ($sayfa - 1) * $sayfada;
$tumurunsor=$db->prepare("SELECT * FROM urunler WHERE urun_durum=:urun_durum ORDER BY urun_id DESC limit $limit,$sayfada");
$tumurunsor->execute(array('urun_durum' => 1));
?>
<?php
if($toplam_sayfa > $limit){
echo '<br><br>';
$x = 2;
if($sayfa > 1){
$onceki = $sayfa-1;
echo '<li class="page-item"><a class="page-link" href="?sayfa='.$onceki.'">« Önceki </a></li>';
}
if($sayfa==1){
echo '<li class="page-item"><a class="page-link">1</a></li>';
}
else{
echo '<li class="page-item"><a class="page-link" href="?sayfa=1">1</a></li>';
}
if($sayfa-$x > 2){
echo '...';
$i = $sayfa-$x;
}else {
$i = 2;
}
for($i; $i<=$sayfa+$x; $i++) {
if($i==$sayfa){
echo '<li class="page-item"><a class="page-link">'.$i.'</a></li>';
}
else{
echo '<li class="page-item"><a class="page-link" href="?sayfa='.$i.'">'.$i.'</a></li>';
}
if($i==$toplam_sayfa) break;
}
if($sayfa+$x < $toplam_sayfa-1) {
echo '...';
echo '<li class="page-item"><a class="page-link" href="?sayfa='.$toplam_sayfa.'">'.$toplam_sayfa.'</a></li>'; // son sayfa yazdırılacak
}elseif($sayfa+$x == $toplam_sayfa-1) {
echo '<li class="page-item"><a class="page-link" href="?sayfa='.$toplam_sayfa.'">'.$toplam_sayfa.'</a></li>';
}
if($sayfa < $toplam_sayfa){
$sonraki = $sayfa+1;
echo '<li class="page-item"><a class="page-link" href="?sayfa='.$sonraki.'"> Sonraki » </a></li>';
}
} ?>
fonksiyonu doğru kullandınız mı?
örnek:
$current_page = 5;
$total_records = 100; // bunun bir işlevi yok fonksiyondanda buradanda kaldırabilirsin.
$total_pages = 10;
$page_url = 'index.php';
echo paginate($current_page, $total_records, $total_pages, $page_url);
aşağıdaki fonksiyonla kendine göre dünzenleyip yapabilirsin.
// $current_page şuanki sayfa
// $total_records Toplam kayıt
// $total_pages Toplam sayfa sayısı
// $page_url url
function paginate($current_page, $total_records, $total_pages, $page_url)
{
$pagination = '';
if($total_pages > 0 && $total_pages != 1 && $current_page <= $total_pages){
$pagination .= '<ul>';
$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="pagination"><a href="'.$page_url.'?page=1" title="İlk">İlk</a></li>';
$pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$previous_link.'" title="Önceki">Önceki</a></li>';
for($i = ($current_page-2); $i < $current_page; $i++){
if($i > 0){
$pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$i.'">'.$i.'</a></li>';
}
}
$first_link = false;
}
if($first_link){
$pagination .= '<li class="active pagination">'.$current_page.'</li>';
}elseif($current_page == $total_pages){
$pagination .= '<li class="active pagination">'.$current_page.'</li>';
}else{
$pagination .= '<li class="active pagination">'.$current_page.'</li>';
}
for($i = $current_page+1; $i < $right_links ; $i++){
if($i<=$total_pages){
$pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$i.'">'.$i.'</a></li>';
}
}
if($current_page < $total_pages){
$next_link = ($next > $total_pages)? $total_pages : $next;
$pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$next_link.'" title="İleri">İleri</a></li>';
$pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$total_pages.'" title="Son">Son</a></li>';
}
$pagination .= '</ul>';
}
return $pagination;
}