2012-10-27 110 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