çevreleyen sayfa numaralarını gösteren

2 Cevap php

Son zamanlarda bazı sayfalandırma yapıyor ve aşağıdaki kullanılan oldum:

if ( $totalPages > $pagesToShow ) {
    $start = $pageNumber - floor($pagesToShow/2);
    $end = $pageNumber + floor($pagesToShow/2);

    while ( $start < 1 ) {
        $start++;
        $end++;
    }

    while ( $end > $totalPages ) {
        $start--;
        $end--;
    }

} else {
    $start = 1;
    $end = $totalPages;
}

nerede başlar ve çevresindeki sayfaların listesini sonlandırmak için çalışmak. Bir çağrı listesi gibi oluşturulabilir böylece << < 1 2-3 4 5 >>> '.

Bu biraz garip görünüyor gibi döngüler kullanarak daha iyi bir yöntem olup olmadığını sadece merak.

2 Cevap

Sen ilk döngü değiştirebilirsiniz

while ( $start < 1 ) {
    $start++;
    $end++;
}

ile

if($start < 1)
{
    $end += (1 - $start);
    $start = 1;
}

Benzer bir şey, ikinci döngü için yapılır, ama etrafında başka bir yol olabilir:

if ( $end > $totalPages ) {
    $start -= ($end - $totalPages);
    $end = $totalPages;
}

Edit: It is much easier to just trim the page numbers which are out of bounds, replace your example code ile:

$start = $pageNumber - $pagesToShow;
$end = $pageNumber + $pagesToShow;

if($start < 1)
    $start = 1;

if($end > $totalPages)
    $end = $totalPages;

$pagesToShow önce göstermek için sayfaların maksimum miktarıdır and Geçerli sayfadan sonra (eğer sınırların dışında)

Sen Zend_Paginator kontrolünü kullanarak bakmak olabilir. Basit Diziler, yanı sıra pek çok başka şeyler ile çalışır. Hatta size bir sonraki / önceki sayfaya bilgiye kolay erişim sağlayan idare edecek.