Kusura bakmayın ben orayı atlamışım. Mesajları yazdığımız zaman iş yerinden yazıyordum. Kod içeriği de yanımda yoktu. Evde localhostta çalışma imkanım olduğu için daha bugün bakabildim. İşyerinde php çalıştıramıyorum çünkü. xampp kuramıyorum. Bugün de fırsat olunca direk hazır kodları alıp denemelere geçeyim demiştim. Kodlarım bir önceki mesajdaki gibi hep. Yine isterseniz paylaşabilirim hocam. @BEYAZMASTER
Hocam sabah mesai olduğundan ve uyku öncesi gördüğümden mesajınızı kod örneği paylaşamayacğaım fakat pseudo bir örnek ile açıklayalım;
Umarım açıklayıcı olmuştur :)
int listelenecekAdet= 10; // Örnek 10 verdik dilerseniz bazı sitelerdeki gibi bu bilgiyi dropdowndan doldurarak 10, 20, 50 gibi çoklu kayıtları listeleme seçeneğini kullanıcıya sunabilirsiniz
int kayitSayisi = [dbdeki kayıt adedini çekiyoruz(SELECT Count(id) FROM tablom WHERE aktif_mi=1)]; //aktif filtresi sadece örnek olması açısından
var sayfadaGosterilecekKayitlar = [dbde gosterilecek kayıtları çekiyoruz(SELECT kolon1, kolont2... FROM tablom ORDER BY kayitYaratmaTarihi DESC LIMIT $limitBaslangic, $listelenecekAdet //dbdeki başlangıç kayıdından sayfada listelenecek adet kadar kayit gostermeyi sağlar
while ($row=mysql_fetch_array($sayfadaGosterilecekKayitlar ))
$gelenVeriler[++$limitBaslangic]=$satir;
//hiç query string olmadan sayfa url'ini alalım
$uri=strtok($_SERVER['REQUEST_URI'],"?")."?";
//sayfadaki page query string olmadan diğer query stringlerin bulunduğu şekilde urlmizi oluşturalım
if (isset($_GET['page']))
unset($_GET['page']);
if (count($_GET)) {
foreach ($_GET as $k => $v) {
if ($k != "page")
$uri.=urlencode($k)."=".urlencode($v)."&";
}
}
//toplam kaç sayfa olacağını hesaplayıp bir arrayi page querystringli linklerimiz ile dolduralım
$sayfaAdedi=ceil($kayitSayisi /$listelenecekAdet);
for($i=1;$i<=$sayfaAdedi;$i++)
$Sayfalar[$i]=$uri.'page='.$i;
//aşağıdaki gibi basit bir şablon ile verilerimizi ve sayfa numaralarını ekrana basabilriz
?>
Toplam kayıt sayısı: =$kayitSayisi?>
Hocam sabah mesai olduğundan ve uyku öncesi gördüğümden mesajınızı kod örneği paylaşamayacğaım fakat pseudo bir örnek ile açıklayalım;
Umarım açıklayıcı olmuştur :)
int listelenecekAdet= 10; // Örnek 10 verdik dilerseniz bazı sitelerdeki gibi bu bilgiyi dropdowndan doldurarak 10, 20, 50 gibi çoklu kayıtları listeleme seçeneğini kullanıcıya sunabilirsiniz
int kayitSayisi = [dbdeki kayıt adedini çekiyoruz(SELECT Count(id) FROM tablom WHERE aktif_mi=1)]; //aktif filtresi sadece örnek olması açısından
var sayfadaGosterilecekKayitlar = [dbde gosterilecek kayıtları çekiyoruz(SELECT kolon1, kolont2... FROM tablom ORDER BY kayitYaratmaTarihi DESC LIMIT $limitBaslangic, $listelenecekAdet //dbdeki başlangıç kayıdından sayfada listelenecek adet kadar kayit gostermeyi sağlar
while ($row=mysql_fetch_array($sayfadaGosterilecekKayitlar ))
$gelenVeriler[++$limitBaslangic]=$satir;
//hiç query string olmadan sayfa url'ini alalım
$uri=strtok($_SERVER['REQUEST_URI'],"?")."?";
//sayfadaki page query string olmadan diğer query stringlerin bulunduğu şekilde urlmizi oluşturalım
if (isset($_GET['page']))
unset($_GET['page']);
if (count($_GET)) {
foreach ($_GET as $k => $v) {
if ($k != "page")
$uri.=urlencode($k)."=".urlencode($v)."&";
}
}
//toplam kaç sayfa olacağını hesaplayıp bir arrayi page querystringli linklerimiz ile dolduralım
$sayfaAdedi=ceil($kayitSayisi /$listelenecekAdet);
for($i=1;$i<=$sayfaAdedi;$i++)
$Sayfalar[$i]=$uri.'page='.$i;
//aşağıdaki gibi basit bir şablon ile verilerimizi ve sayfa numaralarını ekrana basabilriz
?>
Toplam kayıt sayısı: =$kayitSayisi?>
2-) body en sonuna şu kodları ekle. <script></script> <script></script> <script> $(function(){ $("#liste").DataTable(); }); </script>
3-) yaptığın tablonun id sini liste yap. Ya da tablo id ne göre 2.ci söylediğim koddaki yere id ni yaz.
4-) jsonu foreach ile alıp table içinde tr lerin içine json değerlerini yaz. Tmmdır bu kadar. Otomatik sayfalama , veriler içinde arama yapma vs gibi şeyler gelmiş olacaktır.
Çok teşekkürler hocam. Zor da olsa karıştıra karıştıra yapabildim datatable ile sayfalamayı. Mantığını anlamak uzun sürdü tabi :)
Tablonun çalışması için thead ve tbody taglarını kullanmak zorunluymuş. Bu siteyi inceleyince çözdüm.
taglarını da forech döngüsü içinde kullanmak gerekiyormuş. 10 arlı olarak sayfalama yapıyor default olarak. Bu datatable kısmını kullanacağım sitemde.
Ancak resimleri listeleme yaptırdığım sayfada tablolama işi uymuyor bana. Alt alta listeleme yapılıyor çünkü. Ben resimleri 1 satırda 5 tane olacak şekilde listeleme yaptıracağım. O yüzden normal sayfalama yapmayı da öğrenmem lazım.
2-) body en sonuna şu kodları ekle.
<script></script>
<script></script>
<script>
$(function(){
$("#liste").DataTable();
});
</script>
3-) yaptığın tablonun id sini liste yap. Ya da tablo id ne göre 2.ci söylediğim koddaki yere id ni yaz.
4-) jsonu foreach ile alıp table içinde tr lerin içine json değerlerini yaz. Tmmdır bu kadar. Otomatik sayfalama , veriler içinde arama yapma vs gibi şeyler gelmiş olacaktır.
Burada mesela varolan bir diziye sıralama yaptık, sen her foreachda onun idsini "tagını alarak" farklı sayfa da ilk verdiğim örnekte ki gibi içeriğinede ulaşabilirsin
// sorgu ve döngü bloğu /**bir sayfada kaç kayıt gösterilecek*/ $sayfada =5; /**kategorideki toplam ürün sayısını alıp kaç sayfa olacağını belirliyoruz.*/ $listeler = $db->prepare("SELECT * FROM xxxxxxx"); $listeler->execute(array("%".$get."%")); $listeler = $listeler->fetchAll(PDO::FETCH_ASSOC); $liste_adedi = count($listeler); $toplam_sayfa_adedi = ceil($liste_adedi / $sayfada);
/**eğer sayfa yok ise sayfayı 1 olarak belirliyoruz.*/ $sayfa = isset($_GET['sayfa']) ? (int) $_GET['sayfa'] : 1; if($sayfa < 1) $sayfa = 1; if($sayfa > $toplam_sayfa_adedi) $sayfa = $toplam_sayfa_adedi;
/**dbden çekilecek kayıtlar için kaçıncı kayıttan başlanacak onu belirliyoruz ve kayıtlarımızı çekiyoruz.*/ $limit = ($sayfa - 1) * $sayfada; $sayfa_listeler = $db->prepare("SELECT * FROM xxxxxxx limit $limit,$sayfada"); $sayfa_listeler->execute(array("%".$get."%")); $listeler = $sayfa_listeler->fetchAll(PDO::FETCH_ASSOC);