2012-10-27 69 views
2

我有一个简单的新闻系统,我需要改变,所以我可以限制每页的项目,但我没有任何会这样做,所以我需要自己做这个。分页在新闻脚本

基本上功能只是显示整个平面文件的数组,我想限制它每页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>"; 

的对还没有进行,但只有逻辑分割之后。你可以帮帮我吗?

+0

你的脚本看起来很复杂。在这个频道有一个很好的PHP分页教程:www.youtube.com/phpapplied – Norse

回答

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()返回由偏移量和长度参数指定的数组数组中的元素序列。

+0

非常感谢你的代码伴侣,它帮助我的逻辑:) 顺便说一下,一个小调整:在数组切片标注长度参数是$ itemsperpage,而不是$ itempage。尽管这很好用! – user1779359

+0

我还有一个问题,如果你能在这方面再次提供帮助,你将是一位神:P。 我已经完成了数组的分割,并且我正在试图将paginate直接放在函数中,所以它会通过调用新闻系统直接在网站上显示。 http://pastebin.com/XWCLFe7e。 - 这是新闻系统 这就是我所说的功能,以显示我的新闻(在我的主网页的部分 'code'

displayNews();
\t \t \t \t ?> \t \t
'code' – user1779359