Listeleme sorunu PHP ve SQL
Merhabalar,
Şöyle bir sorunum var ürün listeleme yaptım hani bilerek 16 bin adet sql sorgusu döndürdüm ama ürünler sayfasına o verileri listelediğimde ürünler sayfası tüm içerikleri çekiyor o kadar yavaş oluyor ki ya firewall beni banlıyor. Bunun önüne nasıl geçebilirim? Listeleme kodlarımda mı hata var yardımcı olabilir misiniz işin içinden çıkamıyorum çünkü.
Sayfanın sonuna inemiyorsunuz öyle söyleyeyim tüm verileri çekene kadar listeliyor ardından çektiyse hepsini sıralıyor her sayfayı 20ye bölüyor normalde hemen olması gerekende bu olması gerek ama ben şöyle olmasını istiyorum birinci sayfaya tıkladıysam sadece oraya 20 adet veri çekecek ikinci sayfaya tıklarsam 20 böyle böyle gitmesi gerek ama yapamadım akıl verecek birisi varsa çok sevinirim.
<?php
$sonuc = ""; // sonucumuzu varsayılan olarak error olarak ayarlıyoruz
if (is_array($_POST['item'])) { // gelen değerler (eleman-1) dizi olup olmadığını kontrol ediyoruz
foreach ($_POST['item'] as $key => $value) // döngüde elemanların id ve sıra bilgisini alıyoruz
if ($DB->query("UPDATE urunler SET sira = $key WHERE urunid = $value"))
// her satırın id bilgisi ile sıra bilgisini veritabanında düzenliyoruz
$sonuc = "success"; // sonuc değişkenine success değerini atıyoruz
}
echo $sonuc; // sonuç değerini geri döndürüyoruz json formatında da döndürebilirdik
?>
<?php
$sayfa = intval(@$_GET['sayfa']);
if (!$sayfa) {
$sayfa = 1;
}
$bak = $DB->prepare("select * from urunler ");
$bak->execute(array());
$toplam = $bak->rowCount();
$limit = 1000;
$goster = $sayfa * $limit - $limit;
$sayfasayisi = ceil($toplam / $limit);
$forlimit = 2;
$dill = $_SESSION['dil'];
$pr = $DB->query("select * from urunler where dil='$dill' ORDER BY sira ASC limit $goster,$limit")->fetchAll(PDO::FETCH_ASSOC);
foreach ($pr as $tr) {
?>
Admin panelinde kullancaksanız Datatables kullanmanızı öneririm
şümkü sayfalama veya site içi aramalarda extra koda gerek duymadan
sayfalama ve arama yapabilir sayfa kayıt gösterimlerini ayarlayabilirsin
ayrıca türkçe dil desteğide mevcut
DataTables js Kullanım örneği
$(document).ready(function() {
"use strict";
$("#proje-datatable").DataTable({
language: {
paginate: {
previous: "<i class='mdi mdi-chevron-left'>",
next: "<i class='mdi mdi-chevron-right'>"
},
info: "Showing proje _START_ to _END_ of _TOTAL_",
lengthMenu:
"Display <select class='form-select form-select-sm ms-1 me-1'>" +
'<option value="20">20</option>' +
'<option value="50">50</option>' +
'<option value="-1">All</option>' +
"</select> proje"
},
pageLength: 20, // her sayfada 20 kayıt listelenir
columns: [
{ orderable: true },
{ orderable: true },
{ orderable: true },
{ orderable: true },
{ orderable: false }
],
select: {
style: "multi"
},
order: [[0, "asc"]], // yukardan aşağıya veya aşağıdan yukarıya sıralanır ASC veya DESC kodunu kullanabilirsin
drawCallback: function() {
$(".dataTables_paginate > .pagination").addClass("pagination-rounded");//sayfalama js kodu butonlar büyük geliyorsa pagination-sm ile küçültebilirsin
$(".dataTables_length label").addClass("form-label");
$(".dataTables_filter label").addClass("form-label");
}
});
});
bu cevap size yardımcı olmuyorsa
buradan sayfalama ve arama işlemleri konusuna bakabilirsiniz
https://prototurk.com/soru/5503-php-pdo-ile-sayfalama-ve-arama-islemleri