Pagination sorunu.
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?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
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
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.