2016-04-23 134 views
0

我試圖使一個PHP分頁這樣的:PHP分頁循環問題

$count = $this->dataBaseFunctions->countItems(); 
$resultperPage = 10; 
$offset = 0;  
$adjacents = 3; 
$totalPages = ceil(intval($count)/$resultperPage); 


if (isset($_GET['offset'])) { 
    $offset = trim($_GET['offset']); 
} 

$j = $adjacents; 
while ($j > 0) { 
    if (($offset/10) - 1 > 0) { 
    echo '<a href="anypage/' . ($offset - 10 - ($j * 10)) . '" class="pagelink">' . ($offset - 10 - ($j * 10)) . '</a> ';   
    } 
    $j--; 
} 

/*for ($j = $adjacents; $j > 0; $j--) { 
    echo '<a href="anypage/' . ($offset - 10 - ($j * 10)) . '" class="pagelink">' . ($offset - 10 - ($j * 10)) . '</a> '; 
}*/ 

echo '<a href="anypage/' . ($offset - 10) . '" class="pagelink current">[' . ($offset - 10) . '] </a> '; 

for ($j = 1; $j < ($adjacents + 1); $j++) { 
    echo '<a href="anypage/' . ($offset - 10 + ($j * 10)) . '" class="pagelink">' . ($offset - 10 + ($j * 10)) . '</a> '; 
} 

結果應該是這樣的(括號=當前clicket頁): [0] 1 2 3

當我點擊「3」應該看起來像這樣(到目前爲止): 0 1 2 [3] 4 5 6

但是當我點擊「1」時,結果如下所示: -2 -1 0 [ 1] 2 3 4

「0」不是問題,我只是'迴應'它進行調試。 我知道我不設置正確的條件,不顯示低於1的頁面,但我不知道如何使它正確。好像我的眼睛上有西紅柿......回聲僅用於測試 - 稍後我將整個分頁鏈接保存到一個變量中,以將其分配到頁面的底部。它有一些你在這裏看到的調試代碼,但它顯示了我試圖做的事情。請讓我知道,如果我可以改善這個問題,或者是否有缺失的信息:「爲什麼你($ offset/10)-1> 0」;-)

後來我需要做同樣的東西在JS中,但我想我可以管理,當我知道我在PHP版本中做了什麼錯誤。

*也許這是一個壞主意我想在那裏做什麼?

+0

什麼是'$ adjacents'好? – Reto

+0

$ adjacents是當前頁面左側和右側的計數。所以如果我點擊例如「5」,左邊顯示2 3 4,右邊6 7 8像2 3 4 [5] 6 7 8. 1和9沒有顯示。 $ adjacents = 3,一次顯示7頁的範圍 –

回答

1

這一個應該做的伎倆:

現在包括$鄰道

$count = $this->dataBaseFunctions->countItems(); 
$resultperPage = 10; 
$offset = 0; 
$adjacents = 3; 
$totalPages = ceil(intval($count)/$resultperPage); 

if (isset($_GET['offset'])) { 
    $offset = trim($_GET['offset']); 
}  
$start = ($offset-$adjacents) > 0 ? ($offset-$adjacents) : 0; 
$end = ($offset+$adjacents) < $totalPages ? ($offset+$adjacents) : $totalPages; 

$pager = ""; 
for ($i = 0; $i < $totalPages; $i++) { 
    if ($i >= $start && $i <= $end) { 
     $pager .= $offset != $i ? '<a href="anypage/' . $i . '" class="pagelink">' . $i . '</a> ' : "[$i] "; 
    } 
} 
echo $pager; 
+0

謝謝!我會試試看!關於$鄰接呢? –

+0

您的代碼看起來像是一次顯示所有頁面,但我只想一次顯示7個頁面。 –

+0

我用$ adjacents更新了我的答案 - 現在是否適合你? – Reto