php ajax ile sayflama
merhaba php ajax kullanarak sayfalama sistemi yapmak istiyorum elinde güzel bir örnek olan var ise atabilir mi ?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
size PHP ve Ajax kullanarak sayfalama sistemi yapmayı göstereceğim bir örnek sunabilirim.
Bu örnekte, veritabanından verileri çekip sayfalanmış bir şekilde göstermek için bir PHP sayfası kullanacağız. Bu sayfayı, Ajax ile çağırarak sayfalar arasında geçiş yapabileceğimiz bir JavaScript fonksiyonu yazacağız.
İlk olarak, veritabanından verileri çekmek için bir PHP dosyası yazalım. Bu dosya, veritabanından verileri çekip bir dizi olarak döndürecek ve bu dizinin kaç sayfa olacağını hesaplayacak. Örneğin:
<?php
// Veritabanı bağlantısını kurun
$db = new PDO('mysql:host=localhost;dbname=veritabani_adi', 'kullanici_adi', 'sifre');
// Sayfalama için gerekli değişkenleri ayarlayın
$limit = 10; // Her sayfada gösterilecek kayıt sayısı
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1; // Hangi sayfada olduğumuzu belirleyin
$start = ($page - 1) * $limit; // Kaçıncı kayıttan başlayacağımızı belirleyin
// Veritabanından verileri çekin ve sayfalama için gerekli bilgileri hesaplayın
$stmt = $db->prepare("SELECT * FROM tablo_adi LIMIT $start, $limit");
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
$total_records = $db->query("SELECT COUNT(*) FROM tablo_adi")->fetchColumn();
$total_pages = ceil($total_records / $limit);
// Dizi olarak verileri ve sayfalama bilgilerini döndürün
$result = array(
'data' => $data,
'page' => $page,
'total_pages' => $total_pages
);
echo json_encode($result);
Bu dosya, veritabanından verileri çekip bir dizi olarak döndürecek ve bu dizinin kaç sayfa olacağını hesaplayacak. Ayrıca, hangi sayfada olduğumuzu belirleyen page değişkenini de döndürecek.
Sonra, verileri sayfalama işlemini yapacak bir JavaScript dosyası yazalım. Bu dosya, verileri çekmek için PHP dosyamızı çağıracak ve sayfalar arasında geçiş yapabileceğimiz bir fonksiyon içerecek. Örneğin:
// Sayfalar arasında geçiş yapmak için kullanılacak fonksiyon
function paginate(page) {
// Verileri çekmek için PHP dosyamızı çağırın
$.ajax({
url: "verileri_cek.php",
data: { page: page },
type: "GET",
dataType: "json",
success: function (response) {
// Verileri sayfaya yazdırın
let data = response.data;
let html = "";
for (let i = 0; i < data.length; i++) {
html += "<p>" + data[i].adi + "</p>";
}
$("#veriler").html(html);
// Sayfalama bilgilerini güncelleyin
let current_page = response.page;
let total_pages = response.total_pages;
let pagination_html = "";
if (current_page > 1) {
pagination_html +=
'<a href="#" onclick="paginate(' +
(current_page - 1) +
')">«</a>';
}
for (let i = 1; i <= total_pages; i++) {
if (i == current_page) {
pagination_html += "<span>" + i + "</span>";
} else {
pagination_html +=
'<a href="#" onclick="paginate(' + i + ')">' + i + "</a>";
}
}
if (current_page < total_pages) {
pagination_html +=
'<a href="#" onclick="paginate(' +
(current_page + 1) +
')">»</a>';
}
$("#pagination").html(pagination_html);
},
});
}
// Sayfalama işlemini başlatmak için ilk sayfayı çağırın
paginate(1);
Bu dosya, verileri çekmek için PHP dosyamızı çağırır ve dönen verileri sayfaya yazar. Ayrıca, sayfalama bilgilerini de günceller ve sayfalar arasında geçiş yapılabilmesi için gerekli bağlantıları oluşturur.
Bu şekilde, PHP ve Ajax kullanarak sayfalama sistemi yapabilirsiniz. Bu örnekte, veritabanından verileri çekip sayfalanmış bir şekilde göstermek için bir PHP sayfası kullandık ve bu sayfayı, Ajax ile çağırarak sayfalar arasında geçiş yapabileceğimiz bir JavaScript fonksiyonu yazdık.
Bu örnekte, verileri çekmek için PHP dosyası kullandık, ancak alternatif olarak verileri çekmek için başka bir yöntem de kullanabilirsiniz. Örneğin, verileri çekmek için veritabanından değil, dosyalardan veya bir REST API'den çekebilirsiniz. Bu örnekte, verileri sayfaya yazdırma işlemini bir döngüyle yaptık, ancak alternatif olarak verileri bir template motoru kullanarak daha kolayca render edebilirsiniz.
Umarım bu örnek size yardımcı olmuştur ve istediğiniz sayfalama sistemini yapabilmenize yardımcı olmuştur.
Twig hakkında daha fazlası için: https://twig.symfony.com/doc/3.x/intro.html