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> ';
}

结果应如下所示(括号 = 当前点击页面):[0] 1 2 3

当我单击"3"时,它应该看起来像这样(到目前为止有效):0 1 2 [3] 4 5 6

但是当我单击"1"时,结果如下所示:-2 -1 0 [1] 2 3 4

"

0"不是问题,我只是"回显"它进行调试。我知道我没有为不显示低于 1 的页面设置正确的条件,但我不明白如何使其正确。好像我的眼睛上有西红柿...echo 仅用于测试 - 稍后我将整个分页链接保存到一个变量中以将其分配给页面底部。它有一些调试代码,你在这里看到,但它显示了我尝试做什么。请让我知道我是否可以改进问题,或者是否缺少以下信息:"你为什么这样做 ($offset/10) -1> 0" ;-)

稍后我需要在 JS 中做同样的事情,但当我知道我在 PHP 版本中做错了什么时,我想我可以管理它。

*也许我在那里尝试做什么是个坏主意?

这个应该可以解决问题:

现在包括$adjacents

$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;

最新更新