PHP ile sayfalama, büyük miktarda veriye sahip web sitelerinde kullanıcı deneyimini iyileştirmek için sıkça kullanılan bir tekniktir. Sayfalama, tek seferde tüm verileri yüklemek yerine, sayfalar halinde verileri yüklemek ve kullanıcının istediği sayfaya gitmesine izin vermek anlamına gelir. PHP’de sayfalama için birkaç farklı yöntem vardır. İşte, bunlardan bazıları:
SQL sorgularınızda LIMIT
anahtar kelimesini kullanarak sayfalama yapabilirsiniz. LIMIT
anahtar kelimesi, hangi kayıtların döndürüleceğini belirler. Aşağıdaki örnek, test_table
adlı tablodaki kayıtları sayfalama yaparak almak için kullanılabilir.
$per_page = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$start_from = ($page-1) * $per_page;
$sql = "SELECT * FROM test_table LIMIT $start_from, $per_page";
Bu örnekte, $per_page
değişkeni her sayfada gösterilecek kayıt sayısını belirler. Daha sonra, $page
değişkeni kullanıcının görüntülemek istediği sayfa numarasını belirler. isset()
fonksiyonu, eğer sayfa numarası belirtilmemişse varsayılan olarak 1’i kullanır. Son olarak, $start_from
değişkeni, hangi kayıttan başlayacağımızı belirler.
MySQL FOUND_ROWS() fonksiyonunu kullanarak sayfalama yapabilirsiniz. Bu fonksiyon, SELECT SQL_CALC_FOUND_ROWS
ifadesi kullanılarak yapılan bir sorgudan kaç satırın etkilendiğini hesaplar.
$per_page = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$start_from = ($page-1) * $per_page;
// Kayıt sayısını alma
$sql_count = "SELECT SQL_CALC_FOUND_ROWS * FROM test_table LIMIT $start_from, $per_page";
$result_count = $conn->query($sql_count);
$count = $conn->query("SELECT FOUND_ROWS()")->fetchColumn();
// Sayfalama bağlantıları oluşturma
$total_pages = ceil($count / $per_page); // Toplam sayfa sayısını hesaplama
for ($i=1; $i<=$total_pages; $i++) {
echo "<a href='index.php?page=$i'>$i</a>";
}
Bu örnekte, SQL_CALC_FOUND_ROWS
ifadesi kullanarak sorgunun toplam satır sayısını hesaplıyoruz. Daha sonra, FOUND_ROWS()
fonksiyonu kullanarak toplam satır sayısını hesaplıyoruz. Son olarak, sayfalama bağlantıları oluşturmak için total_pages
değişkenini kullanıyoruz.
Pager sınıfları, sayfalama işlemini otomatikleştiren hazır kod parçacıklarıdır. Pager sınıflarının çoğu, bir veritabanı bağlantısı üzerinden çalışır ve çok sayıda seçenek sunar. PEAR gibi kütüphane yöneticileri, PHP sayfalama sınıflarını içeren paketleri sağlar. Örneğin, Pager
sınıfını kullanarak sayfalama yapabilirsiniz.
require_once 'Pager/Pager.php';
$params = array(
'mode' => 'Jumping',
'perPage' => 10,
'urlVar' => 'page'
);
$pager = & Pager::factory($params);
$data = $pager->getPageData();
foreach ($data as $row) {
echo $row['name'] . "<br />";
}
echo $pager->links;
Bu örnekte, Pager
sınıfını kullanarak sayfalama bağ
lantılarını ve sayfaların içeriğini görüntülüyoruz. $params
dizisinde, sayfalama ayarları belirtilir. ->getPageData()
fonksiyonu ile her sayfa için verileri elde ederiz ve bu verileri döngü yardımıyla görüntüleriz. Son olarak, ->links
özelliği kullanarak sayfalama bağlantılarını gösteririz.
Pager sınıfları, sayfalama işlemini oldukça basit hale getirirler. Ancak, bazı durumlarda karmaşık sorgular içinde kullanımı zor olabilir.
Bu yöntemlerden herhangi birini kullanarak PHP’de sayfalama yapabilirsiniz. Ancak, sayfalama işleminin performansı etkileyebileceğini unutmayın. Büyük miktarda veri içeren sitelerde sayfalama yaparken, sorguların optimize edilmesi önemlidir.