PHP ile basit sayfalama

4 Cevap

I would like to implement paging in PHP. I have some result set from db, let it be an array. I need a paging that should display 4 records per page and the page numbers should be of the following

"<< 1,2,3 ..... 20 >>"

Eğer sayfa 2 seçtiğinizde ve ardından biçimi aşağıdaki olmalıdır

"<< 3,4,5 ..... 20 >>"

Siz bu uygulamak için bana bazı çağrı kavramları önerebilirsiniz?

4 Cevap

Aslında bunun için SQL LIMIT yan tümcesini kullanabilirsiniz.

Here 'ın iyi bir öğretici başlamak için.

PEAR::Pager içine bak.

Sonuç alma sayfa sayısına göre yukarıda belirtildiği gibi limitini kullanarak, yeterince basittir. Sen sayfa numaralarını yazdırmak için bir döngü kullanabilirsiniz.

İlk olarak, sayfa numarası sorgu dizesinde sayfa = 2 olarak gönderilir söylüyorlar.

$pagenum=(int)$_GET['page'];
if($pagenum<1){ $pagenum=1; }//perform a sanity check. You might also query to find the max page number and see that it's not higher than that.

Bir ofset olarak daha sonra sayfa başına sonuç sayısının eksi sayfa başına sonuç ile çarpılması sonra, SQL sorgusuna pagenum yerleştirin.

Hemen hemen her durumda bir Ancak bu durumda since you are sure the variable is an int due to casting ((int) bölüm) kesinlikle gerekli değil, elbette SQL içine verilen parametreleri kullanarak koymak için hazırlanmış bir deyimi kullanmalısınız. Sadece vurgulamak zorunda kaldı.

Sayfa başına 4 ürün yok söylüyorlar. Siz iki argüman SINIR veya LİMİT ve ayrı OFFSET kullanabilir ya. Sadece sınırlamak kullanırsanız, ilk sayı ofset, ikinci sonuç sayıdır.

$offset=$pagenum*4-4;//this means for page 1, start on 0, page 2 starts on 4, etc.
$sql="select * from the_table limit $offset,4";

Yani, belirli bir sayfa numarası veri almak nasıl. Ardından, sayfa numaralarını yazdırarak başka bir hikaye. Bu örnek, yukarıda açıklandığı gibi bakmak sayfaları nasıl dayanmaktadır.

for($i=pagenum+1;$i<20;$i++){
  if($i<$pagenum+4){  ?>
  <a href='stuff.php?page=<?php echo $i;?>'><?php echo $i;?></a>
  <?php } elseif($i==$pagenum+4) { ?>
  ... <?php } elseif($i==20){ ?>
  <a href='stuff.php?page=20'>20</a>
  <?php } ?>

Ben bir standart kitaplığı kullanarak öneriyoruz. Ignacio PEAR :: Çağrı kütüphane kurumlarda, ama ben Zend Framework Zend_Paginator kısmi değilim.

Farklı veri kaynaklarını kullanarak başkaları tarafından geniş bir kütüphaneye dahil adaptörleri çeşitli ve Github var.