Load More Daha Fazla Göster Uygulaması
PHP'de Veritabanından Gelen Veriyi Nasıl Daha Fazla Göster Yapabilirim.
<?php
$soru=$db->prepare("SELECT * FROM uye_gonderi
inner join uyeler on uyeler.uye_id = uye_gonderi.gonderi_kim
order by gonderi_id desc limit 1,2");
$soru->execute(array(
));
if($soru->rowCount()){
while($z=$soru->fetch(PDO :: FETCH_ASSOC)){
?>
<div class="col-lg-6">
<!-- Blog post-->
<div class="card mb-4">
<a href="#!"><img class="card-img-top" src="assets/post2.jpg" alt="..." /></a>
<div class="card-body">
<div class="small text-muted"><?php echo date('d/m/Y H:i', strtotime($z["gonderi_tarih"]));?></div>
<h2 class="card-title h4"><?php echo $z['gonderi_baslik'];?></h2>
<p class="card-text"><?php echo substr($z['gonderi_aciklama'],0,100);?>...</p>
<a class="btn btn-primary" href="#!">Detay Göster →</a>
</div>
</div>
<!-- 2. Blog post-->
</div>
<?php }
}else{
echo'<div class="alert alert-info" role="alert">
Konu Bulunamadı
</div>';
}?>
</div>
<button type="button" class="btn btn-primary mb-3 ">Daha Fazla Soru Göster</button>
Bunu yapmak için öncelikle veritabanından verileri sayfalama yöntemiyle çekmelisiniz. Bu sayede veritabanından bir kere çektiğiniz verileri sayfalara bölerek gösterir ve kullanıcı daha fazla veri görmek istediğinde sayfayı yenilemeden verileri gösterir.
İlk olarak, veritabanından verileri çekmek için kullandığınız sorguyu değiştirin ve verileri limitleme kısmını belirleyecek değişkenler kullanın. Örneğin:
$limit = 10; // Her sayfada gösterilecek veri sayısı
$page = 1; // Başlangıçta gösterilecek olan sayfa
$soru=$db->prepare("SELECT * FROM uye_gonderi INNER JOIN uyeler ON uyeler.uye_id = uye_gonderi.gonderi_kim ORDER BY gonderi_id DESC LIMIT :limit OFFSET :offset");
$soru->bindValue(':limit', $limit, PDO::PARAM_INT);
$soru->bindValue(':offset', ($page - 1) * $limit, PDO::PARAM_INT);
$soru->execute();
Daha sonra, kullanıcı "Daha Fazla Soru Göster" butonuna tıkladığında sayfayı yenilemeyi ve veritabanından daha fazla veri çekmeyi önleyerek verileri göstermek istediği sayfaya gitmek için JavaScript kullanabilirsiniz. Örneğin:
<button type="button" class="btn btn-primary mb-3" onclick="loadMore()">Daha Fazla Soru Göster</button>
<script>
function loadMore() {
// Verileri yüklemek için kullanılacak sayfa değişkenini bir arttırın
page++;
// Verileri yüklemek için Ajax isteği gönderin
$.ajax({
url: 'get-data.php', // Verileri çekmek için kullandığınız PHP dosyası
data: {
limit: limit,
page: page
},
success: function(data) {
// Verileri sayfaya ekleyin
$('.col-lg-6').append(data);
}
});
}
</script>
Son olarak, verileri çekmek için kullandığınız PHP dosyasında, ajax isteğinde gönderilen limit ve page değişkenlerini kullanarak veritabanından verileri çekin ve daha sonra sayfaya ekleyeceğiniz HTML çıktısı oluşturun. Örneğin:
<?php
// Veritabanı bağlantısını ve verileri çekmek için kullanılacak sorguyu aynen kullanın
$limit = $_GET['limit'];
$page = $_GET['page'];
$soru=$db->prepare("SELECT * FROM uye_gonderi INNER JOIN uyeler ON uyeler.uye_id = uye_gonderi.gonderi_kim ORDER BY gonderi_id DESC LIMIT :limit OFFSET :offset");
$soru->bindValue(':limit', $limit, PDO::PARAM_INT);
$soru->bindValue(':offset', ($page - 1) * $limit, PDO::PARAM_INT);
$soru->execute();
// Verileri döngüyle döndürün ve HTML çıktısı oluşturun
while($load=$soru->fetch(PDO::FETCH_ASSOC)){
echo '
<div class="col-lg-6">
<!-- Blog post-->
<div class="card mb-4">
<a href="#!"><img class="card-img-top" src="assets/post2.jpg" alt="..." /></a>
<div class="card-body">
<div class="small text-muted">'.date('d/m/Y H:i', strtotime($load["gonderi_tarih"])).'</div>
<h2 class="card-title h4">'.$load['gonderi_baslik'].'</h2>
<p class="card-text">'.substr($load['gonderi_aciklama'],0,100).'...</p>
<a class="btn btn-primary" href="#!">Detay Göster →</a>
</div>
</div>
</div>
';
}
?>
Bu şekilde, kullanıcı "Daha Fazla Soru Göster" butonuna tıkladığında sayfayı yenilemeden veritabanından daha fazla veri çekerek sayfada gösterilebilir.