v2.5.2
Giriş yap

Listeleme sorunu PHP ve SQL

root3r
427 defa görüntülendi ve 1 kişi tarafından değerlendirildi

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) {

                  ?>
codepacks
919 gün önce

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