v2.5.2
Giriş yap

Pagination sorunu.

erkamalper
676 defa görüntülendi

Sayfama bir pagination eklemek istiyorum. Ve aklımdaki pagination şu şekilde;

  • Her sayfaya bir ID verilir.
  • Sayfa her değiştirildiğinde bir sonraki ID'li sayfanın URL'ine yönlendirilir. (https://blabla.com/page/3 gibi)

Ancak bunu yaptığım zaman, searchbar'ım sadece bulunulan sayfada arama gerçekleştircek. Ben ise tüm verilerde arama gerçekleştirmesini istiyorum.

Searchbar kodlarım;

$(document).ready(() => {
  $("#search").keyup(function() {
    const value = $(this).val().toLowerCase();
    $(".column").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
    });
  });
});

Önerileriniz nelerdir?

Cevap yaz
Cevaplar (4)
themonster
1236 gün önce

Ajax isteği yapıp php de like yaptırıp o anki tablo verilrini bir değerde tutup (arama kısmı boş olduğunda eski verilerin gözükmesi için bence) ajaxdan gelen değeri direk tablonun tbody sine ekletme ile yapılır birden fazla tablo ve kategorin varsa searchına bir data-x tarzı verip ayıra bilirsin diye düşünüyorum

makifgokce
1236 gün önce

benim gözler gitti galiba görmemişim kusura bakma :)

erkamalper
1236 gün önce

Hocam PHP kullanmıyorum.

makifgokce
1236 gün önce

her sayfaya id vererek bu işlemi yaptırmak bence mantıksız olur.
sonuçta sayfalardaki veriler dinamik olacağı için.

function pagination($current_page, $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><a href="'.$page_url.'/1">İlk</a></li>';
            $pagination .= '<li><a href="'.$page_url.'/'.$previous_link.'">Önceki</a></li>';
                for($i = ($current_page-2); $i < $current_page; $i++){
                    if($i > 0){
                        $pagination .= '<li><a href="'.$page_url.'/'.$i.'">'.$i.'</a></li>';
                    }
                }
            $first_link = false;
        }

        if($first_link){
            $pagination .= '<li class="active">'.$current_page.'</li>';
        }elseif($current_page == $total_pages){
            $pagination .= '<li class="active">'.$current_page.'</li>';
        }else{ //regular current link
            $pagination .= '<li class="active">'.$current_page.'</li>';
        }

        for($i = $current_page+1; $i < $right_links ; $i++){
            if($i<=$total_pages){
                $pagination .= '<li><a href="'.$page_url.'/'.$i.'">'.$i.'</a></li>';
            }
        }
        if($current_page < $total_pages){
				$next_link = ($next > $total_pages)? $total_pages : $next;
                $pagination .= '<li><a href="'.$page_url.'/'.$next_link.'">İleri</a></li>';
                $pagination .= '<li><a href="'.$page_url.'/'.$total_pages.'">Son</a></li>';
        }

        $pagination .= '</ul>';
    }
    return $pagination;
}
$pageLength = 10; // sayfa başına gösterilecek veri miktarı
$data = []; // DB den gelen veri
$page = 1; // urlden gelen parametre
$pages = ceil($data/$pageLength);

if($page < 1) {
    $page = 1;
}
if($page > $pages){
    $page = $pages;
}
echo pagination($page, $pages, "http://localhost");

Veya https://datatables.net/ bunuda kullanabilirsin.