• 16-04-2024, 15:59:01
    #1
    Merhaba, PHP ile yazılmış bir sistemde veritabanındaki satış verilerini listeletiyorum.

    Ancak verileri foreach ile döndürüyorum ve +3000 tane kayıt olduğu için sayfa çok geç yüklüyor.

    Datatables kullanıyorum ve server side processing yapmam lazım. (Bunu çözmeye çalıştım ancak yapamadım.)

    Yardımcı olabilecek var mı ?
  • 16-04-2024, 16:00:44
    #2
    verileri dkaha hızlı alabilmek için şu yöntemi uygula

    <?php
    // Veritabanı bağlantısı
    $conn = new mysqli("localhost", "kullanici_adi", "sifre", "veritabani");
    
    // Hata kontrolü
    if ($conn->connect_error) {
        die("Veritabanı bağlantı hatası: " . $conn->connect_error);
    }
    
    // İstek parametrelerini al
    $start = $_GET['start']; // Başlangıç indeksi
    $length = $_GET['length']; // Kaç kayıt alınacağı
    
    // Sorgu oluştur
    $sql = "SELECT * FROM satis_tablosu LIMIT $start, $length";
    $result = $conn->query($sql);
    
    // Sonuçları JSON formatında döndür
    $data = [];
    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
    echo json_encode([
        "draw" => intval($_GET['draw']),
        "recordsTotal" => /* Toplam kayıt sayısı */,
        "recordsFiltered" => /* Filtrelenmiş kayıt sayısı */,
        "data" => $data
    ]);
    
    // Bağlantıyı kapat
    $conn->close();
    ?>
  • 16-04-2024, 16:01:22
    #3
    Datables kullandiginiz için yavaşliyor js sayfalama yapmaya çaliştigindan dolayi sürec oluyor bunun yerine düz sayfalandirma yapsan sorun olmaz
  • 16-04-2024, 16:06:21
    #4
    shms adlı üyeden alıntı: mesajı görüntüle
    verileri dkaha hızlı alabilmek için şu yöntemi uygula

    <?php
    // Veritabanı bağlantısı
    $conn = new mysqli("localhost", "kullanici_adi", "sifre", "veritabani");
    
    // Hata kontrolü
    if ($conn->connect_error) {
        die("Veritabanı bağlantı hatası: " . $conn->connect_error);
    }
    
    // İstek parametrelerini al
    $start = $_GET['start']; // Başlangıç indeksi
    $length = $_GET['length']; // Kaç kayıt alınacağı
    
    // Sorgu oluştur
    $sql = "SELECT * FROM satis_tablosu LIMIT $start, $length";
    $result = $conn->query($sql);
    
    // Sonuçları JSON formatında döndür
    $data = [];
    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
    echo json_encode([
        "draw" => intval($_GET['draw']),
        "recordsTotal" => /* Toplam kayıt sayısı */,
        "recordsFiltered" => /* Filtrelenmiş kayıt sayısı */,
        "data" => $data
    ]);
    
    // Bağlantıyı kapat
    $conn->close();
    ?>
    İndek ile veri aralığı seçtirdiğim sayfada var ancak sonuçları json formatına çevirmeyi anlamadım.

    rowCount adlı üyeden alıntı: mesajı görüntüle
    Datables kullandiginiz için yavaşliyor js sayfalama yapmaya çaliştigindan dolayi sürec oluyor bunun yerine düz sayfalandirma yapsan sorun olmaz
    Bunu nasıl yapabilirim? js ile sayfalama var evet.
  • 16-04-2024, 16:09:09
    #5
    Yöntem 1. Veritabanindan tüm verileri alirsan php memory doluyor ve yavaş çalışıyor. Çözüm veritabandan bilgileri 100 er tane parça parça alirsan sorun çözülür.
    Yöntem 2. Veritanindan gelen tüm verileri array şekilinde getir. Ve chunk sistemi ver parçalara ayir örnek 3000 kayit varsa 10 na böl kisaca yöntem 1 deki işlevi php tarafta sagla.
    Yöntem 2. En saglami. Datatablede pagination vardir araştirsan. Pagination kullan inyernette tonlarca örnek var.
    Saygilarla
  • 16-04-2024, 16:12:06
    #6
    MrProxima adlı üyeden alıntı: mesajı görüntüle
    İndek ile veri aralığı seçtirdiğim sayfada var ancak sonuçları json formatına çevirmeyi anlamadım.

    Bunu nasıl yapabilirim? js ile sayfalama var evet.
    datatable kullanmayarak custom table ile JS kütüphanesi olan datatable ile verileri listeletme yapmadan düz html css table türleri var onlarla birlikte custom şekilde verilerini pagination kullanarak sayfalara bölerek listelenmesini sağlayarak yapabilirsin.
  • 16-04-2024, 16:37:44
    #7
    Sayfalama için istemci tarafında pipeline yapacaksın:
    https://datatables.net/examples/serv.../pipeline.html

    Sunucu tarafında ise SSP kütüphanesi kullanabilirsin. DataTables ile gönderilen istekleri işlemek için özel bir PHP kütüphanesi.