Php sayfalama (pagination) sınıfı: Pager

Pager yeni keşfettiğim oldukça işlevsel bir veri sayfalama sınıfı. Mysql veritabanı, klasör içeriği ve listelenebilir diğer tüm datalarınızı sayfalara bölmek için kullanabilirsiniz. Kullanımı da oldukça basit, yapmanız gereken tek şey script dosyalarını Pager isimli bir klasöre kopyalamak ve sayfalama yapacağınız yerden çağırmak. Ben özellikle get ile taşınan değişkenlere her koşulda saygı duyuyor olmasından hoşlandım, yani değişkenleriniz siz ekstra bir çaba sarfetmeden sayfalama linkleri ile birlikte aynen taşınıyor.

Örnek uygulama:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
require_once 'Pager/Pager.php';

// Rastgele veri oluştur
$myData = array();
for ($i=0; $i<200; $i++) {
    $myData[] = $i;
}

$params = array(
    'itemData' => $myData,
    'perPage' => 10,
    'delta' => 8,             // for 'Jumping'-style a lower number is better
    'append' => true,
    //'separator' => ' | ',
    'clearIfVoid' => false,
    'urlVar' => 'entrant',
    'useSessions' => true,
    'closeSession' => true,
    //'mode'  => 'Sliding',    //try switching modes
    'mode'  => 'Jumping',

);

$pager = & Pager::factory($params);
$page_data = $pager->getPageData();
$links = $pager->getLinks();

$selectBox = $pager->getPerPageSelectBox();
?>

<html>
<head>
<title>Egonomik.com :: PHP Sayfalama (pagination) Class: Pager 2.4.8</title>
</head>
<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">
Her sayfada gösterilecek sonuç:
<?php echo $selectBox; ?> &nbsp;
<input type="submit" value="Tamam" />
</form>

<table border="1" width="500" summary="example 1">
    <tr>
        <td colspan="3">
            <pre><?php print_r($page_data); ?></pre>
        </td>
    </tr>
    <tr>
        <td colspan="3" align="center">
        <?php echo $links['all']; ?>
        </td>
    </tr>
</table>

<h4>Results from methods:</h4>

<pre>
getCurrentPageID()...: <?php var_dump($pager->getCurrentPageID()); ?>
getNextPageID()......: <?php var_dump($pager->getNextPageID()); ?>
getPreviousPageID()..: <?php var_dump($pager->getPreviousPageID()); ?>
numItems()...........: <?php var_dump($pager->numItems()); ?>
numPages()...........: <?php var_dump($pager->numPages()); ?>
isFirstPage()........: <?php var_dump($pager->isFirstPage()); ?>
isLastPage().........: <?php var_dump($pager->isLastPage()); ?>
isLastPageComplete().: <?php var_dump($pager->isLastPageComplete()); ?>
$pager->range........: <?php var_dump($pager->range); ?>
</pre>
<hr />
<br>
<a href="http://www.egonomik.com">Egonomik.com</a>
<br>
<br>
</body>
</html>

Örnek veritabanı sayfalama uygulaması:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
require_once ('Pager/Pager.php');

//*** Veritabanı tanımlamaları ***//
$db_sunucu      = "localhost";
$db_kullanici   = "kullanici";
$db_sifre       = "sifre";
$db_veritabani  = "veritabani";

if(!$link = mysql_connect("$db_sunucu", "$db_kullanici", "$db_sifre")) {
die("Veritabanına bağlanılamadı!"); }
mysql_select_db("$db_veritabani");

$result = mysql_query("SELECT count(*) AS total FROM kullanicilar");
$pgr    = mysql_fetch_array($result);
$totalItems = $pgr['total'];

//*** Pager ayarları ***//

$pager_options = array(
'mode'       => 'Jumping', // Gelişmiş sayfalama metodu "Jumping" veya "Sliding"
'perPage'    => 5, // her sayfada 5 kayıt
'delta'      => 4,
'nextImg'    => '<img src="images/next.gif">', // sonraki *boş bırakılabilir
'prevImg'    => '<img src="images/prev.gif">', // önceki  *boş bırakılabilir
'totalItems' => $totalItems, // toplam kayıt sayısı
);
 
$pager = Pager::factory($pager_options);
 
list($from, $to) = $pager->getOffsetByPageId();

$from = $from - 1;
$perPage = $pager_options['perPage'];
 
//*** Sonuçları listele ***//

$result = mysql_query("SELECT * FROM kullanicilar LIMIT $from , $perPage");
while($row = mysql_fetch_object($result)){

    echo 'ID: '.$row->id.' Kullanıcı: '.$row->username.'<br>';

}

// Sayfa linkleri
echo $pager->links;

// Veritabanındaki toplam veri sayısı
echo "Toplam veri sayısı: $totalItems";

?>

Scriptin detaylı örneği:
Demo

Scripti indir (48 Kb):
Download

Facebook Yorumları

7 Yorum

  1. Murat

    Localhostta çalışıyor ama sunucuda Fatal error: Call to a member function getOffsetByPageId diye bir hata verdi

Uyarı: Yorumlarda link kullanmayınız. Link içeren yorumlar otomatik olarak spam kabul edilmektedir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir