v2.5.2
Giriş yap

Php sayfalama

merakli
1,695 defa görüntülendi ve 1 kişi tarafından değerlendirildi
<?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 } } 
           
        ?>
    

Cevap yaz
Cevaplar (5)
merakli
1114 gün önce

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>';     
  } 
} ?>
makifgokce
1114 gün önce

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);
merakli
1114 gün önce

Hiçbir çıktı vermedi hata da dahil

merakli
1114 gün önce

Deneyip sonucu paylaşacağım

makifgokce
1114 gün önce

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;
}