新闻剧本中的分页

时间:2012-10-27 14:35:13

标签: php pagination

我有一个简单的新闻系统,我需要更改,所以我可以限制每页的项目,但我没有任何可以做到这一点,所以我需要自己这样做。

基本上该函数只显示整个平面文件数组,我想将其限制为每页3个项目(可配置)。

我的开始逻辑是:

$itemspage=pages->current_page;
$itemsperpage=3;
$limitn=$itemperpage*$itemspage;
$itemindex=$limitn-2;

如果页面为1,它将显示来自数组索引1,2,3的新闻 如果页面是2,它将显示来自数组索引4,5,6的新闻 等等...

我认为这在逻辑上应该可行,但如果阵列中的新闻不能分成3个怎么办?这个逻辑应该(至少在起始索引上)导致错误。

整个代码在这里:

$list = $this->getNewsList();
  $pages = new Paginator;
  echo "<table class='newsList'>";
  foreach ($list as $value) {
    $newsData = file($this->newsDir.DIRECTORY_SEPARATOR.$value);
    $newsTitle  = $newsData[0];
     $submitDate = $newsData[1];    
     unset ($newsData['0']);
     unset ($newsData['1']);

     $newsContent = "";
     $itemspage=pages->current_page;
     $itemperpage=3;
     $limitn=$itemperpage*$itemspage;
     $itemindex=$limitn - 2;
     foreach ($newsData as $value) {
           $newsContent .= $value;
     }

    echo "<tr><th align='left'>$newsTitle</th>
              <th class='right'>$submitDate</th></tr>";
    echo "<tr><td colspan='2'>".$newsContent."<br/></td></tr>";
  }
  echo "</table>";

for还没有完成分裂背后的逻辑。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我不确定你是如何构建你的$ newsContent,但也许你的答案就在这里:

$list = $this->getNewsList();

$pages = new Paginator;
$itemspage = $pages->current_page;
$itemperpage = 3; // you might want te define this property in the paginator also ($itemperpage = $pages->items_per_page);
$currentPageList = array_slice($list, ($itemspage - 1) * $itemperpage, $itemspage);

echo "<table class='newsList'>";
foreach ($currentPageList as $value) {
    $newsData = file($this->newsDir.DIRECTORY_SEPARATOR.$value);
    $newsTitle  = $newsData[0];
    $submitDate = $newsData[1];
    unset ($newsData['0']);
    unset ($newsData['1']);

    $newsContent = "";
    $limitn=$itemperpage*$itemspage;
    $itemindex=$limitn - 2;
    foreach ($newsData as $value) {
        $newsContent .= $value;
    }

    echo "<tr><th align='left'>$newsTitle</th>
    <th class='right'>$submitDate</th></tr>";
    echo "<tr><td colspan='2'>".$newsContent."<br/></td></tr>";
}
echo "</table>";

请注意array_slice

  

array_slice()返回数组中的元素序列,由offset和length参数指定。